Jeu 5 alignés

Fermé
Dikos - Modifié par Dikos le 2/01/2017 à 14:12
 Firefly - 2 janv. 2017 à 20:05
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>





A voir également:

12 réponses

yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
2 janv. 2017 à 15:18
bjr, Comment tes données sont-elles structurées?
0
Diikos Messages postés 7 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 2 janvier 2017
2 janv. 2017 à 19:04
il y a 2 joueurs chacun a un pion different
0
Utilisateur anonyme
2 janv. 2017 à 19:10
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
Diikos Messages postés 7 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 2 janvier 2017
2 janv. 2017 à 19:15
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
Utilisateur anonyme
2 janv. 2017 à 19:23
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Diikos Messages postés 7 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 2 janvier 2017
2 janv. 2017 à 19:26
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
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
2 janv. 2017 à 19:34
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
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
Utilisateur anonyme
2 janv. 2017 à 19:44
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
Diikos Messages postés 7 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 2 janvier 2017
2 janv. 2017 à 19:53
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
Diikos Messages postés 7 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 2 janvier 2017
2 janv. 2017 à 19:55
La ligne de 1 a Nl c'est cohérent car c'est l'affichage du tableau.
0
Utilisateur anonyme
2 janv. 2017 à 19:58
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
Firefly > Utilisateur anonyme
2 janv. 2017 à 20:05
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
Diikos Messages postés 7 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 2 janvier 2017
2 janv. 2017 à 19:58
Plateau(5..Nl;5..Nc) : tableau d’entiers c'est de 1..Nl;1..Nc non pas 5
0
Diikos Messages postés 7 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 2 janvier 2017
2 janv. 2017 à 20:01
oui oui je l'ai corrigé
0