Jeu de console

Résolu
smohamedl Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
smohamedl Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un probleme a vous posez ,
j'ai essayé de faire un tp que j'ai trouve sur un des sites , le tp demande de faire le jeu morpion sur console en programment en c .
mon programme lorsque le joueur deux entre il lettre on dirait qu il ne peut pas la lire , vous allez comprendre en lisant le code . Mon code semble etre bizzare car je suis un debutant , voila le code :

#include <stdio.h>
#include <stdlib.h>

char lireCaractere()
{
char caractere = 0;

caractere = getchar(); // On lit le premier caractère
caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà

// On lit les autres caractères mémorisés un à un jusqu'au \n (pour les effacer)
while (getchar() != '\n') ;

return caractere; // On retourne le premier caractère qu'on a lu
}
int main()
{
char A1 = '.', A2 = '.', A3 = '.', B1 = '.', B2 = '.', B3 = '.', C1 = '.', C2 = '.', C3 = '.';
int nbre = 0, i = 0; char lettre = ' ', l = ' ', lettre1 = ' ', lettre2 = ' ';
int joueur = 2, s = 0;
int m = 0;
for(m = 0; m <= 9; m++)
{
switch(joueur)
{
case 1 : joueur++; l = '*'; break;
case 2 : joueur--; l = 'x'; break;
}
printf(" 1 2 3 "); printf("\n A %c %c %c ", A1, A2, A3); printf("\n B %c %c %c", B1, B2, B3);
printf("\n C %c %c %c", C1, C2, C3);
printf(" \n Joueur %d : ", joueur);
lettre = lireCaractere();

if(lettre == 'A')
{
printf(" le nbre : ");
scanf("%d", &nbre);
switch(nbre)
{
case 1 : A1 = l; break;
case 2 : A2 = l; break;
case 3 : A3 = l; break;
}
}
else if(lettre == 'B')
{
printf(" le nbre : ");
scanf("%d", &nbre);
switch(nbre)
{
case 1 : B1 = l; break;
case 2 : B2 = l; break;
case 3 : B3 = l; break;
}
}
else if(lettre == 'C')
{
printf(" le nbre : ");
scanf("%d", &nbre);
switch(nbre)
{
case 1 : C1 = l; break;
case 2 : C2 = l; break;
case 3 : C3 = l; break;
}
}
else printf(" enter une lettre entre a , b et c \n");

if(A1 == B1 == C1 == l) printf(" le joueur %d a gagné !", joueur);
else if(A2 == B2 == C2 == l) printf(" le joueur %d a gagné !", joueur);
else if(A3 == B3 == C3 == l) printf(" le joueur %d a gagné !", joueur);

if(m == 9) printf(" aucun joueur n'a gagne ! ");

}

return 0;
}

et merci d'avance .

A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

T'aurais dû utiliser un tableau pour gérer la grille de morpion (plutôt que d'utiliser des variables a1, ...). Ton code sera beaucoup plus court et plus lisible.

Dans l'affichage, il faudrait que tu mettes un espace supplémentaires devant 1 2 3. Cela sera plus propre.

Il faut mettre des getchar(); après chacun de tes scanf("%d", ...) comme tu as fait dans ta fonction lireCaractere(). Sinon cela sautera le scanf("%c",...) suivant.

Plutôt que if (A1 == A2 == A3), il faut mettre if (A1 == A2 && A1 == A3) ...
Il manque des cas pour vérifier qui a gagné. Il y a les lignes, les colonnes et les diagonales.

En amélioration :
Utiliser une fonction affichage(), etc.
Contrôler les entrées utilisateurs (forcer a, b ou c, et 1, 2 ou 3).
Empêcher l'utilisateur d'écrire sur une case non vide
Dès

La prochaine fois, merci d'utiliser la balise "code" (à droite du bouton souligné) pour poster ton code.

Cdlt,
2
smohamedl Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   1
 
merci il marche beaucoups mieu maintenant
0