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. 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
    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. 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. 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. 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. 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. 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. 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. Plateau(5..Nl;5..Nc) : tableau d’entiers c'est de 1..Nl;1..Nc non pas 5