|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : probleme d'algo puissance 4 [ Archives Visual Basic / Maths ] (raziel62)
Informations & options pour cette discussion
mercredi 9 mars 2005 à 15:34:18 |
probleme d'algo puissance 4

raziel62
|
salut,
je suis en train de faire un puissance 4 en vb6. mais je bloque pour voir qu´il y a 4 pions alignés ou non.
donc je vous explique ce que j´ai fait:
j´ai fait le jeu avec des images indexées (avec drag and drop) mais lorsque le joueur
met un pion, ça remplie aussi un tableau a deux dimensions tab(-2 to
10, -2 to 10)
normalement le joueur peut mettre des pions que entre 1 et 7 mais
j´ai rajouter une " bordure" de 3 pour pouvoir comparer car sinon j´ai
un message d´erreur.
le premier nombre c´est la collone et le deuxieme la ligne.
maintenant il ne reste plus qu´a ecrire l´algo mais j´aimerai faire
un truc propre et pas une succession de IF j'ai compté 16 cas differents ou on peut avoir 4 pions alignés. Quelqu´un a une idée?
merci
|
|
|
mercredi 9 mars 2005 à 17:32:21 |
Re : probleme d'algo puissance 4

DomCabana
|
Dans un cas semblable j'avais prix les 2 premières cases, si pareil, je prend 3 case, si pareil je prend 4 case, si pareil bingo
donc bouclé par deux case surveillé pour la dernière pour ne pas dépassé répété pour le sens des lignes soit verticale, horizontale et diagonale
il te faudra peut-être utilisé le modulo à certain endroit.
|
|
|
mercredi 9 mars 2005 à 18:20:01 |
Re : probleme d'algo puissance 4

raziel62
|
ok merci je pense que c'est ce que j'ai fait un peu pret :
j'ai fait quatres tests deux pour les diagonales et deux pour
l'orizontal et le vertical. Ca marche mais si quelqun a une idée pour
simplifier le code ...
Tabl(collone, ligne) permet de determiner quel est le pion du joueur qui a jouer en dernier.
For j = -3 To 3
If Tabl(collone + j, ligne - j) = Tabl(collone, ligne) Then
compteur1 = compteur1 + 1
If compteur1 = 4 Then
MsgBox ("V")
End If
Else
compteur1 = 0
End If
'''''''''''''''
If Tabl(collone - j, ligne - j) = Tabl(collone, ligne) Then
compteur2 = compteur2 + 1
If compteur2 = 4 Then
MsgBox ("V")
End If
Else
compteur2 = 0
End If
'''''''''''''''
If Tabl(collone, ligne - j) = Tabl(collone, ligne) Then
compteur3 = compteur3 + 1
If compteur3 = 4 Then
MsgBox ("V")
End If
Else
compteur3 = 0
End If
'''''''''''''
If Tabl(collone + j, ligne) = Tabl(collone, ligne) Then
compteur4 = compteur4 + 1
If compteur4 = 4 Then
MsgBox ("V")
End If
Else
compteur4 = 0
End If
Next
|
|
|
mercredi 9 mars 2005 à 18:43:14 |
Re : probleme d'algo puissance 4

DomCabana
|
Je ne l'écrirai pas au point mais je te donne un apercu
for i = 0 to 3 ' 0=verticale, 1=horizontale, 2=dia1, 3 =dia2 for j = 0 to colonne-1 if Tabl(colonne+i,ligne+j) = Tabl(colonne+i+1, ligne+j) else
end if next next
À partir de la tu dois ajuster tes variables pour couvrir tout ton tablo de jeu, exemple pour diagonale1 tu devras peut-être ajouter une variable x pour te permettre d'arrivé à la position désiré. Je ne peux pas m'assir et concevoir l'algorithme à ta place mais ca devrait resembler à ca avec des variantes
|
|
|
mercredi 9 mars 2005 à 21:46:03 |
Re : probleme d'algo puissance 4

Gobillot
|
il y a 4 tests à faire: 1 pour l'orizontal, 1 pour la verticale, et 2 pour les diagonales. soit la Table T(x,y) qui contient 0 si vide, 1 pour joueur n°1, 2 pour joueur n° 2, etc ... soit xx, yy la taille de la grille, soit j le joueur en cours et x,y la dernière case jouée.
'test horizontal b = y: n = 0 for a = 1 to xx if T(a,b) = j then n = n + 1 if n = 4 then cas = 1: exit for next
'text vertical a = x: n = 0 for b = y to yy if T(a,b) = j then n = n + 1 if n = 4 then cas = 2: exit for next
'test diagonale 1 d = x + y: n = 0 for a = 1 to xx b = d - a if b <= yy and b > 0 then if T(a,b) = j then n = n + 1 if n = 4 then cas = 3: exit for end if next
'test diagonale 2 d = x - y: n = 0 for a = 1 to xx b = a - d if b <= yy and b > 0 then if T(a,b) = j then n = n + 1 if n = 4 then cas = 4 exit for end if next
Daniel
|
|
|
jeudi 10 mars 2005 à 00:09:57 |
Re : probleme d'algo puissance 4

cqui789
|
Je vais y aller de ma proposition.
Dans ton code, si il y a 4 pion non consecutif (tu scane sur 7 places) tu peu rendre un gagne.
le joueur j vient de jouer en x,y
' on regarde a droite et a gauche
a=1
do while tabl(x + a, y ) = j
a = a + 1
loop
b=1
do while tabl(x - b, y) = j
b=b + 1
loop
if a + b > 4 then Call Gagne
' on regarde enbas a droite et en haut a gauche
a=1
do while tabl(x + a, y + a ) = j
a = a + 1
loop
b=1
do while tabl(x - b, y - b) = j
b=b + 1
loop
if a + b > 4 then Call Gagne
' on regarde en haut a droite et en bas a gauche
a=1
do while tabl(x + a, y - a ) = j
a = a + 1
loop
b=1
do while tabl(x - b, y + b) = j
b=b + 1
loop
if a + b > 4 then Call Gagne
' et enfin, en bas et a gauche
a=1
do while tabl(x, y + a ) = j
a = a + 1
loop
b=1
do while tabl(x, y - b) = j
b=b + 1
loop
if a + b > 4 then Call Gagne
on doit pouvoir faire plus simple...
|
|
|
jeudi 10 mars 2005 à 01:04:44 |
Re : probleme d'algo puissance 4

cqui789
|
Je le savait, on peut faire plus court:
dim ok(-1 to 1, -1 to 1) as boolean, compt( 0 to 4) as integer
for a = 1 to 3
for b = - 1 to 1
for c = - 1 to 1
if tabl( x + b * a, y + c * a) = j and ok( b, c) then
compt(Abs(b + c * 3)) = compt( Abs(b + c * 3)) + 1
else
ok( b, c) = False
end if
next
next
next
for a = 1 to 4
if compt(a) > 2 then gagne
next
|
|
|
Cette discussion est classé dans : probleme, algo, puissance, pions, alignés
Répondre à ce message
Sujets en rapport avec ce message
verifier 4 pions aligner en puissance 4 [ par maxw004 ]
Salut, j'aimerai savoir si qq'un pourrai me faire le code (ou me dire comment je peux faire ) pour verifier si 4 pions de la meme couleur sont aligner
probleme lors de la creation du cd d instalation [ par imad_lol ]
jai créé un cd d instalation.mais le probleme c'est que la base de donéé ke jai cré avc acces ne s instale pa.merci
Probleme CHR [ par nabil88 ]
Salut à tous,J'ai un probleme, en fait j'utilise dans mon code des tabulation donc je met le code ascii chr(9): For i = 1 To Rx0.Fields.Count
Probleme Technique??? [ par sixty65 ]
Bonjour jai un petit probleme,quand je telecharger EUROBARRE le telecharger S'arrette au milieuet sur l'ecran s'affiche !!! ERREUR CRITIQUE-INTERRUPTI
probleme de variable [ par JuNaNoR ]
bonjours a tousje suis newbie dans la programmation, et j'aurais voulu avoir quelque tuyaux de la par de programmeurs plus confirmés :dans mon program
probleme avec usbio (lecture port usb) [ par wisdeco81 ]
J'ai essayé usbio mais j'ai un probleme:Je voulais tester sur une souris...Quand j'instale il reconnait la souris puis instale le driver. Apres je ne
Probleme de Reference manquante VBA [ par helpvb ]
Bonjour,J ai développé des macros VBA et suis sous environnement Office 11J ai besoin d assurer la compatibilité descendante dans la mesaure ou plusie
Webbrowser et erreur de script. [ par lolpop ]
Re,je voudrai savoir, si c'est moi qui ai un probleme ou si ca le fait a tout le monde.J'ai créé un petit browser pour m'amuser grace a webbrowser, et
probleme de listbox [ par kirby_71 ]
bonjour jai un soucis, jai fait un programme qui utilise une listbox, au fur et a mesure que jentre du txt dans la listbox, elle se remplit (normal),
probleme envois winsock [ par StiriX ]
Bonjour à tous. Voici le code d'où est le problème:Dim fs,d As ObjectDim sResult,s As String Set fs = CreateObject("Scripting.FileSystemObject"
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|