Jeu 5 alignés

Dikos -  
 Firefly -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bjr, Comment tes données sont-elles structurées?
    0
  2. Diikos Messages postés 7 Statut Membre
     
    il y a 2 joueurs chacun a un pion different
    0
  3. Utilisateur anonyme
     
    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
  4. Diikos Messages postés 7 Statut Membre
     
    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. Utilisateur anonyme
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Diikos Messages postés 7 Statut Membre
     
    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
  7. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  8. Utilisateur anonyme
     
    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
  9. Utilisateur anonyme
     
    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
  10. Diikos Messages postés 7 Statut Membre
     
    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
  11. Diikos Messages postés 7 Statut Membre
     
    La ligne de 1 a Nl c'est cohérent car c'est l'affichage du tableau.
    0
    1. Utilisateur anonyme
       
      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
      1. Firefly > Utilisateur anonyme
         
        Bonjour 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
  12. Diikos Messages postés 7 Statut Membre
     
    Plateau(5..Nl;5..Nc) : tableau d’entiers c'est de 1..Nl;1..Nc non pas 5
    0
  13. Diikos Messages postés 7 Statut Membre
     
    oui oui je l'ai corrigé
    0