Jeu 5 alignés

Bonjour,
Alors voila j'ai commencé mon programme du jeu des 5 alignés mais le problème c'est que je ne sais pas vraiment comment faire la vérification alignement. Il faut compter combien de symboles identiques sont autour du dernier symbole joué. Puis il faudra aussi vérifier les alignements verticaux et horizontaux mais aussi les alignement en diagonale. Je ne sais pas trop comment m'y prendre au niveau de l'algorithme. Et biensur c'est en un algorithme en langage basique avec des conditions ( Si, alors , tant que etc ..)

<code basic>


12 réponses

  1. Contributeur
    bjr, Comment tes données sont-elles structurées?
    0
    1. il y a 2 joueurs chacun a un pion different
      0
      1. Bonsoir

        quel VB?
        • VBS
        • VBA
          • Word
          • Excel
          • Access
          • Powerpoint
          • Autre
        • VB6
        • VB.Net
          • Winform
          • WPF


        Peux tu poster le code que tu as déjà écrit, ça permettra de répondre à la question yg_be, ce qui n'est pas le cas de
        il y a 2 joueurs chacun a un pion different
        0
        1. Désolé j'vais pas très bien compris. Il n'y a pas de language particulier c'est que de l'écrit sur word avec des conditions.
          Voici ce que j'ai commencé: Constantes : Nlmax30
          Ncmax40

          Variables : NomJ1: chaine de caractère
          NomJ2: chaine de caractère
          1erJ : chaine de caractère
          2èmeJ : chaine de caractère
          PionJ1: chaine de caractère
          PionJ2: chaine de caractère
          Nl : entier
          Nc : entier
          L : entier
          C :entier
          Plateau_de_Jeu(5..Nl;5..Nc) : tableau d’entiers
          Ligne : chaine de caractère
          n : entier
          i :entier
          j :entier
          CHOIX : entier

          Phase 0://Introduction du jeu

          Afficher « Bienvenue dans le jeu du 5 alignés »
          Afficher « Le jeu est fait pour 2 joueurs »

          Phase1://Choix des dimensions du tableau (plateau de jeu)

          Afficher « Saisir dimensions du plateau de jeu »
          Afficher « Saisir un nombre de colonnes et de lignes supérieur à 4 »
          Saisir Nl et Nc
          Tant que (Nl<5 ou Nc<5)
          Afficher « Erreur, plateau de jeu trop petit »
          Fin tant que
          Afficher « Le nombre de lignes ne doit pas dépasser » & Nlmax
          Afficher « Le nombre de colonnes ne doit pas dépasser » & Ncmax
          Tant que (Nl>Nlmax ou Nc>Ncmax)
          Afficher « Erreur, plateau de jeu trop grand »
          Fin tant que

          Phase2 : //Saisie par les joueurs leur nom dans le jeu

          Afficher «Saisir NomJ1 »
          Saisir NomJ1
          Afficher « Saisir NomJ2 »
          Saisir NomJ2
          Phase3://Les joueurs choisissent leur pion

          Afficher NomJ1 & «: saisissez votre pion parmi les caractères du clavier »
          Saisir PionJ1
          Répéter
          Afficher NomJ2 & «: saisissez votre pion parmi les caractères du clavier »
          Saisir PionJ2
          Si Pion J2=PionJ1 alors
          Afficher « Erreur, même pion que » & NomJ1
          Fin si
          Tant que Pion J2=PionJ1

          Phase4://Affichage du plateau de jeu

          Pour i1 à Nl
          LigneT(i,1)
          Pour j2 à Nc
          LigneLigne & T(i,j)
          Fin pour
          Afficher Ligne
          Fin pour

          Phase5://Choix aléatoire du joueur qui commence

          nHASARD()*10
          Si 0<n<4 alors
          1erJNomJ1
          Afficher 1erJ & «commence en premier la partie »
          Sinon
          1erJNomJ2
          Afficher 1erJ & « commence en premier la partie »
          Si 1erJNomJ1 alors
          Afficher NomJ2 & « joue après » & 1erJ
          2èmeJNomJ2
          Sinon
          1erJNomJ2
          Afficher NomJ1 & « joue après 1erJ »
          2èmeJNomJ1
          Fin si

          Phase6://Affichage du menu
          //Phase à répéter à chaque coup

          Répéter
          Afficher « Sélectionnez l’opération que vous voulez effectuée »
          Afficher « (1) Saisir un case du plateau pour jouer un coup »
          Afficher « (2) Abandonner la partie »
          Afficher « Indiquez la valeur de l’option choisie : »
          Saisir CHOIX
          Selon CHOIX parmi :
          1 : //Saisie d’une case par le joueur qui joue son coup
          Option 1 :Partie A
          Saisie du coup et de sa validité
          Option2 :Partie B
          Vérification alignement
          Etape de Saisie
          Fin cas
          2 : //Abandonner la partie
          Afficher « Vous avez perdu la partie »
          Fin cas
          Fin Selon
          Tant que (Choix=/2 ou le tableau est plein ou un joueur gagne)

          Structure de l’algorithme Étape :

          Afficher « Début de la partie »
          Afficher 1erJ & « débute la partie »
          //Affichage du menu (Phase 6)
          //1erJ sélectionne l’option 1, saisir une case

          Afficher « Saisir une case du plateau pour insérer votre pion »
          Afficher « Saisir L entre 1 »& Nl
          Afficher « Saisir C entre 1 »& Nc
          Saisir L
          Saisir C
          0
          1. Alors le Basic est langage donc forcément en utilisant ce terme tu orientes les réponses dans une mauvaise direction, ce que tu montres c'est du pseudo code, de l'algorithme.
            0
        2. A surement je ne connait pas très bien ce domaine. Pourriez vous m'aider sur la vérification de l'alignement des pions ?
          0
          1. Contributeur
            Tu déclares une variable Plateau_de_Jeu, que tu n'utilises pas, et tu utilises une variable T non déclarée. Tu ne nous montres pas comment tu enregistres des pions dans le jeu. Je ne comprends pas ce que tu fais avec CHOIX.
            C'est un exercice ou un projet personnel? Tu vas programmer l'algorithme ensuite?
            Je te suggère de proposer des solutions pour vérifier
            1) si un coup est valide
            2) si la partie est gagnée
            0
            1. D'abord, ce qui ne va pas dans ton code

              Plateau_de_Jeu(5..Nl;5..Nc) : tableau d’entiers 

              Ton tableau à des lignes allant de 5 à Nl et des colonnes allant de 5 à Nc
              Pourquoi 5?
              Surtout que cela n'est pas cohérent avec
              Pour i1 à Nl 
              LigneT(i,1)
              Pour j2 à Nc
              LigneLigne & T(i,j)
              Fin pour
              Afficher Ligne
              Fin pour

              Là ça commence à 1.
              A noter que pour la majorité des langages, ça commence à 0 et pas 1.

              Et puis du initialises un tableau avec Nl et Nc alors que tu n'as pas encore demandé ces valeurs.

              Au passage, la réponse pour yg_be, c'est que tes données sont organisées en tableau à 2 dimensions.


              Afficher « Saisir un nombre de colonnes et de lignes supérieur à 4 »
              Saisir Nl et Nc
              Tant que (Nl<5 ou Nc<5)
              Afficher « Erreur, plateau de jeu trop petit »
              Fin tant que


              Ici tu demandes les valeurs, et ensuite tu fais une boucle tant qu'elle sont incorrectes mais comme tu ne le redemandes, ben ça bouclera à l'infini.

              Ceci fonctionnerait
              Afficher « Saisir un nombre de colonnes et de lignes supérieur à 4 » 
              Saisir Nl et Nc
              Tant que (Nl<5 ou Nc<5)
              Afficher « Erreur, plateau de jeu trop petit »
              Afficher « Saisir un nombre de colonnes et de lignes supérieur à 4 »
              Saisir Nl et Nc
              Fin tant que


              Mais tu doubles le code, ce qui n'est jamais une bonne idée (si il y'a un bug, il faut le corriger 2 fois... et y penser 2 fois....)

              Ceci est fonctionnel et "optimisé"

              For
              Afficher « Saisir un nombre de colonnes et de lignes supérieur à 4 »
              Saisir Nl et Nc
              SI (Nl<5 ou Nc<5)
              Afficher « Erreur, plateau de jeu trop petit »
              Tant que (Nl<5 ou Nc<5)


              Et d'ailleurs une seule boucle devrait suffire pour la limite mini et la limite maxi.

              Pourquoi faire
              nHASARD()*10 
              pour 2 choix, multiplier par 2 suffit.

              Quand j'étais petit, la mer Morte n'était que malade.
              George Burns
              0
              1. Maintenant pour ta question.

                puisque c'est un tableau, il te faut faire des boucles qui font varier lignes et colonnes
                pour une coordonnées (l,c) regarder si (l+1,c) (l+2,c) (l+3,c) et (l+4,c) sont les mêmes
                puis si (l,c+1) (l,c+2) (l,c+3) et (l,c+4) sont les mêmes,
                et enfin si (l+1,c+1) .... (l+4,c+4) pour la diagonale

                Les variable l et c, doivent varier intelligemment de façon à ce que les "vérifications" ne sortent pas du tableau.
                0
                1. Projet Informatique

                  Constantes : Nlmax30
                  Ncmax40

                  Variables : NomJ1: chaine de caractère
                  NomJ2: chaine de caractère
                  1erJ : chaine de caractère
                  2èmeJ : chaine de caractère
                  ‘.’ : chaine de caractère
                  PionJ1: chaine de caractère
                  PionJ2: chaine de caractère
                  1erJPion: chaine de caractère
                  2èmeJPion: chaine de caractère
                  Nl : entier
                  Nc : entier
                  L : entier
                  C : entier
                  Plateau(5..Nl;5..Nc) : tableau d’entiers
                  Ligne : chaine de caractère
                  h : entier
                  i :entier
                  j :entier
                  CHOIX : entier

                  Phase 0://Introduction du jeu

                  Afficher « Bienvenue dans le jeu du 5 alignés »
                  Afficher « Le jeu est fait pour 2 joueurs »

                  Phase1://Choix des dimensions du tableau (plateau de jeu)

                  Afficher « Saisir dimensions du plateau de jeu »
                  Afficher « Saisir un nombre de colonnes et de lignes supérieur à 4 »
                  Saisir Nl et Nc
                  Tant que (Nl<5 ou Nc<5)
                  Afficher « Erreur, plateau de jeu trop petit »
                  Fin tant que
                  Afficher « Le nombre de lignes ne doit pas dépasser » & Nlmax
                  Afficher « Le nombre de colonnes ne doit pas dépasser » & Ncmax
                  Tant que (Nl>Nlmax ou Nc>Ncmax)
                  Afficher « Erreur, plateau de jeu trop grand »
                  Fin tant que

                  Phase2 : //Saisie par les joueurs leur nom dans le jeu

                  Afficher «Saisir NomJ1 »
                  Saisir NomJ1
                  Afficher « Saisir NomJ2 »
                  Saisir NomJ2
                  Phase3://Les joueurs choisissent leur pion

                  Afficher NomJ1 & «: saisissez votre pion parmi les caractères du clavier »
                  Saisir PionJ1
                  Répéter
                  Afficher NomJ2 & «: saisissez votre pion parmi les caractères du clavier »
                  Saisir PionJ2
                  Si Pion J2=PionJ1 alors
                  Afficher « Erreur, même pion que » & NomJ1
                  Fin si
                  Tant que Pion J2=PionJ1

                  Phase4://Remplissage du plateau par un caractère qui représentera les cases vides

                  Pour i de 1 à Nl faire
                  Pour j de 1 à Nc faire
                  Plateau(i,j)’.’
                  Fin pour
                  Fin pour

                  Phase5://Affichage du plateau de jeu

                  Pour i1 à Nl
                  LignePlateau(i,1)
                  Pour j2 à Nc
                  LigneLigne & Plateau(i,j)
                  Fin pour
                  Afficher Ligne
                  Fin pour

                  Phase6://Choix aléatoire du joueur qui commence
                  hHASARD()*10
                  Si 0<h<4 alors
                  1erJNomJ1
                  Afficher 1erJ & «commence en premier la partie »
                  Sinon
                  1erJNomJ2
                  Afficher 1erJ & « commence en premier la partie »
                  Si 1erJNomJ1 alors
                  Afficher NomJ2 & « joue après » & 1erJ
                  2èmeJNomJ2
                  Sinon
                  1erJNomJ2
                  Afficher NomJ1 & « joue après 1erJ »
                  2èmeJNomJ1
                  Fin si

                  //Changement de variable pour simplifier l’écriture de la suite de l’algorithme afin de prendre en compte la possibilité que les deux joueurs puisse jouer en 1er
                  Si 1erJNomJ1 alors
                  1erJPionPionJ1
                  Sinon
                  2èmeJPionPionJ1
                  Fin si

                  Si 1erJNomJ2 alors
                  1erJPionPionJ2
                  Sinon
                  2èmeJPionPionJ2
                  Fin si

                  Phase7://Affichage du menu
                  //Phase à répéter à chaque coup

                  Répéter
                  Afficher « Sélectionnez l’opération que vous voulez effectuée »
                  Afficher « (1) Saisir un case du plateau pour jouer un coup »
                  Afficher « (2) Abandonner la partie »
                  Afficher « Indiquez la valeur de l’option choisie : »
                  Saisir CHOIX
                  Selon CHOIX parmi :
                  1 : //Saisie d’une case par le joueur qui joue son coup
                  Option 1 :Partie A
                  Saisie du coup et de sa validité
                  Option2 :Partie B
                  Vérification alignement
                  Etape de Saisie
                  Fin cas
                  2 : //Abandonner la partie
                  Afficher « Vous avez perdu la partie »
                  Fin cas
                  Fin Selon
                  Tant que (Choix=/2 ou le tableau est plein ou un joueur gagne)

                  Structure de l’algorithme Étape :

                  Afficher « Début de la partie »
                  Afficher 1erJ & « débute la partie »
                  //Affichage du menu (Phase 6)
                  //1erJ sélectionne l’option 1, saisir une case

                  Répéter
                  Afficher « Saisir une case du plateau pour insérer votre pion »
                  Afficher « Saisir L entre 1 »& Nl
                  Afficher « Saisir C entre 1 »& Nc
                  Saisir Plateau(L,C)
                  Si Plateau(L,C) <> ‘.’ alors
                  Afficher « Erreur, case non vide »
                  Sinon
                  Plateau(L,C)1erJPion
                  Fin si
                  Tant que Plateau(L,C)<> 1erJPion

                  Voici le programme avec quelque modification.

                  On crée une variable choix qui est dans le menu qui permet au joueur soit de jouer un coup soit il quitte la partie.

                  Il faut minimum un tableau de 5 par 5 car si le tableau de 4 ou moins le jeu ne pourrait pas fonctionné vu que c'est 5 pions alignés
                  0
                  1. La ligne de 1 a Nl c'est cohérent car c'est l'affichage du tableau.
                    0
                    1. Ben non, tu as déclaré que ton tableau va de 5 à Nl et de 5 à Nc, donc 1, 2, 3 et 4 n'existent pas.
                      0
                    2. @Utilisateur anonymeBonjour Whismeril,
                      Je suis le camarade qui le projet avec Diikos.
                      J'avais effectivement fait l'erreur de mettre 5, je l'ai corrigé en "Plateau(1..Nl,1..Nc)"
                      0
                  2. Plateau(5..Nl;5..Nc) : tableau d’entiers c'est de 1..Nl;1..Nc non pas 5
                    0