begin process at 2012 02 14 13:47:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Maths

 > 

probleme d'algo puissance 4


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme d'algo puissance 4

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ée 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,856 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales