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)

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"


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.