Page : 1
| Auteurs | Messages |
|---|---|
| AntoineR | Posté à 15h24 le 17 May 09 |
|
Membre inscrit le 17/05/2009 Messages : 1 Localisation : | Je dois faire un puissance 4 et je suis un gros newbie donc voici mon code : [code=c] #include<stdio.h> #include<stdbool.h> #define LIGNE 6 #define COLONNE 7 #define J1 'x' #define J2 'o' #define VIDE ' ' typedef char Grille[LIGNE][COLONNE]; /*Affichage du tableau*/ void initialiser(Grille maGrille){ int i=0; int j=0; while(j<COLONNE){ i=0; while(i<LIGNE){ maGrille[i][j]=VIDE; i++; } j++; } } void afficherGrille (Grille maGrille){ int i=0; int j=0; while(i<LIGNE){ while(j<COLONNE){ printf("|%c", maGrille[i][j]); j++; } j=0; printf("| \n"); i++; } } bool verifierRegle( int choix_joueur ){ int i=6; bool plein=true; Grille maGrille; while(plein==true && i!=0){ if(maGrille[i][choix_joueur]==VIDE){ plein=false; } i=i-1; } return(plein); } void appliquerGravite( int choixJoueur, Grille maGrille, char j ){ int i=6; int ligne; while(i!=0){ if(maGrille[i][choixJoueur]==J1 || maGrille[i][choixJoueur]==J2){ i=i-1; } else{ maGrille[i][choixJoueur]=j; i=0; } } } int main (void){ Grille monTab; int col; bool gagnant=false; initialiser(monTab); afficherGrille(monTab); while(gagnant==false){ printf("choisissez une colonne \n"); scanf("%d", &col); while(col>=COLONNE){ printf("la colonne %d n'existe pas, donnez en une autre", &col); scanf("%d", &col); } verifierRegle(col); appliquerGravite(col, monTab, J1); afficherGrille(monTab); return(0); }[/code] donc j'aimerais bien avoir mes X et mes O qui s'affichent quand le joueur joue et puis dans la mesure du possible savoir comment faire pour changer de joueur... Merci d'avance La signature est limitée à 200 caractères |
| Petipo | Posté à 00h44 le 18 May 09 |
|
Membre inscrit le 04/05/2008 Messages : 9 Localisation : Dans mon T-shirt. | Voici une version de ton code améliorée et qui marche. Pas terminée et je posterai les explications plus tard. Bonne chance. #include<stdio.h> #include<stdbool.h> #define LIGNE 6 #define COLONNE 7 #define J1 'x' #define J2 'o' #define VIDE ' ' typedef char Grille[LIGNE][COLONNE]; /*Affichage du tableau*/ void initialiser(Grille maGrille) { int i=0; int j=0; while(j<COLONNE) { i=0; while(i<LIGNE) { maGrille[i][j]=VIDE; i++; } j++; } } void afficherGrille (Grille maGrille) { int i=0; int j=0; while(i<LIGNE){ while(j<COLONNE) { printf("|%c",maGrille[i][j]); j++; } j=0; printf("| \n"); i++; } } bool verifierRegle( Grille maGrille, int choix_joueur ) { int i=6; bool plein=true; while (plein==true && i!=0) { if (maGrille[i][choix_joueur]==VIDE) { plein=false; } i=i-1; } return plein; } int Verifcol ( Grille jeu ,int c, char joueur ) { int i=0; int comp=0; while (i<6 && comp<4) { if (jeu [i][c]==joueur) { comp++; } else { comp=0; } i++; } if (comp==4){return true;} else {return false;} } bool Verifligne (Grille jeu, int l, char joueur) { int i=0; int comp=0; while (i<7 && comp<4) { if (jeu [l][i]==joueur) { comp++; } else { comp=0; } i++; } if (comp==4){return true;} else {return false;} } bool Verifdiago (Grille jeu, int l, int c, char joueur) { /* à compléter */ return false; } bool Verifier ( Grille jeu , char j, int c, int l) { bool p4=false; int joueur=j; if (Verifcol(jeu, c, joueur) || Verifligne(jeu, l, joueur) || Verifdiago(jeu, l, c, joueur) ){p4=true;} return p4; } int appliquerGravite( int choixJoueur, Grille maGrille, char j ) { int i=5; int ligne; choixJoueur--; bool ok= true; while(i>=0 && ok) { if(maGrille[i][choixJoueur]==VIDE) { maGrille[i][choixJoueur]=j; ok=false; } else i--; } return i; /*on retourne la ligne à laquelle a été ajouté le pion */ } char Changejoueur ( char j ) { if (j=='x') return 'o'; else return 'x'; } int main (void) { Grille monTab; int col; char joueur='o'; bool gagnant=false; int ligne; initialiser(monTab); afficherGrille(monTab); while(gagnant==false) { joueur=Changejoueur(joueur); printf("Choisissez une colonne \n"); scanf("%d", &col); while(col>=COLONNE && col<1) { printf("\n La colonne %d n'existe pas, donnez en une autre", col); scanf("%d", &col); } if (!verifierRegle(monTab, col)) /* Si la colonne n'est pas pleine on joue */ ligne=appliquerGravite(col, monTab, joueur);/*En plus de placer le pion à la bonne ligne, on récupère celle-ci. */ else /* sinon on affiche un msg d'erreur et on change le joueur pour que lorsqu'il sera rechangé en début de boucle il soit en fait toujours le même */ { printf ("Colonne pleine \n"); joueur=Changejoueur(joueur); } afficherGrille ( monTab ); gagnant=Verifier (monTab, joueur, col, ligne); /* vérification du jeu pour voir si l'on a gagné. ( appelle Verifligne, Verifcol et Verifdiago ) */ } printf ("Gagné !"); return 0; } Les blagues les plus courtes sont souvent les moins longues. |
Page : 1