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

  • Votes
  • Date
  • Date décroissante
  1. Plateau(5..Nl;5..Nc) : tableau d’entiers c'est de 1..Nl;1..Nc non pas 5
    1. La ligne de 1 a Nl c'est cohérent car c'est l'affichage du tableau.
      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.
      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)"
    2. 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
      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.
        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
          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
            1. A surement je ne connait pas très bien ce domaine. Pourriez vous m'aider sur la vérification de l'alignement des pions ?
              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
                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.
              2. 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