Problème de variable

Résolu/Fermé
Flight_Of_Ikarus Messages postés 3 Date d'inscription lundi 5 septembre 2016 Statut Membre Dernière intervention 8 septembre 2016 - Modifié par Flight_Of_Ikarus le 6/09/2016 à 08:20
Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 - 11 sept. 2016 à 17:01
Bien le bonjour a tous ce qui passeront par là.

Je suis un jeune débutant en C, et je souhaiterai créer un morpion. Hélas j'ai un gros probléme.

Mais avant de vous expliquer mon problème, je vais juste vous expliquer mon programme.

Mon programme contient pour l'instant que la partie pour que le joueur un ( ou croix 'X' ) puisse choisir une case a joué. Pour cela il choisi sa case à l'aide du clavier numerique ( 7 pour en haut a gauche, 8 pour en haut au millieu ... ).

Le programme va utilisé deux variables par case, une pour l'état de la case ( 'R' pour vide, 'X' pour croix (évidement), 'O' pour rond) ; et aussi une variable ( avec le prefixe 'bis' ) pour savoir si la case a deja été visité ( 0 pour libre, et 1 pour occuper ).
C'est variables sont nommé inteligament,
hg pour haut gauche
hm pour haut millieu
hd pour haut drois
mg pour millieu gauche
....


Le problème etant que quand je choisi par exemple la case 7 ( ou n'impote quelle autre ) le programme me sort une grille rempli de croix, alors qu'il devrait y avoir seulement la case 7 avec une croix.

Voici le fameux programme :
#include <stdio.h>
#include <stdlib.h>

 char hg = 'R'; char hm = 'R'; char hd = 'R';   /* déclaration des variables du haut */
 char mg = 'R'; char mm = 'R'; char md = 'R';   /* déclaration des variables du millieu */
 char bg = 'R'; char bm = 'R'; char bd = 'R';   /* déclaration des variables du bas */

 int hgbis = 0; int hmbis = 0; int hdbis = 0;   /* déclaration de l'etat des variables du haut */
 int mgbis = 0; int mmbis = 0; int mdbis = 0;   /* déclaration de l'etat des variables du haut */
 int bgbis = 0; int bmbis = 0; int bdbis = 0;   /* déclaration de l'etat des variables du haut */
 int u;
 int t;

int main () {

   printf("tour du joueur numéro un :\n");
   printf("utiliser le paver numerique pour choisir la case voulu\n");
   scanf("%d", &u);
   
if(u == 7 && hgbis == 0 );  /* haut gauche */
  {
 hg = 'X';
 hgbis = 1;
   }

if(u == 8 && hmbis == 0 );  /* haut millieu */
  {
 hm = 'X' ;
 hmbis = 1;
   }

if(u == 9 && hdbis == 0 );   /* haut droit */
  {
 hd = 'X' ;
 hdbis = 1;
   }

if(u == 4 && mgbis == 0 );   /* millieu gauche */
  {
 mg = 'X' ;
 mgbis = 1;
   }

if(u == 5 && mmbis == 0 );   /* millieu millieu */
  {
 mm = 'X' ;
 mmbis = 1;
   }

if(u == 6 && mgbis == 0 );   /* millieu droit */
  {
 md = 'X' ;
 mdbis = 1;
   }

if(u == 1 && bgbis == 0 );   /* bas gauche */
  {
 bg = 'X' ;
 bgbis = 1;
   }

if(u == 2 && bmbis == 0 );   /* bas millieu */
  {
 bm = 'X' ;
 bmbis = 1;
   }

if(u == 3 && bdbis == 0 );   /* bas droit */
  {
 bd = 'X' ;
 bdbis = 1;
   }

   printf("\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n");
 
   printf("%c|" ,hg); printf("%c|" ,hm); printf("%c \n" ,hd);
 printf("%c|" ,mg); printf("%c|" ,mm); printf("%c \n" ,md);
 printf("%c|" ,bg); printf("%c|" ,bm); printf("%c \n" ,bd);
}


Si quelqu'un sait d'ou vient le programme je veut bien un peu d'aide.
Merci d'avance pour d'éventuelle réponse.
(désolé pour la longueur du poste et pour d'éventuel faute d'hortographe)

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
7 sept. 2016 à 00:08
Bonjour,
A la fin de toutes les lignes if, il ne faut pas mettre un point-vigule.
Vois-tu bien pourquoi?
0
Flight_Of_Ikarus Messages postés 3 Date d'inscription lundi 5 septembre 2016 Statut Membre Dernière intervention 8 septembre 2016
Modifié par Flight_Of_Ikarus le 8/09/2016 à 20:46
ha oui... Si je met le point virgule après le if , l'action a éffectuer si la condition est remplis est nul.

Merci bien de m'avoir aidez.

(encore une question, mon programme est-il bien structurer ? )
0
Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 1 121
11 sept. 2016 à 17:01
Non c'est affreux la répétition de code et les variables globales...
0