Puissance 4 en C

Fermé
Moondir Messages postés 10 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 18 mai 2009 - 4 mai 2008 à 05:09
 maryouma08 - 30 nov. 2010 à 12:47
Bonjour,
je suis actuellement sur mon projet à la fac qui est de créer le jeu puissance 4 en C. Donc j'aimerais avoir votre avis sur mon programme, j'accepte toutes les critiques ;)

Le voici:

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

#define LIGNE 7
#define COLONNE 6
/*initialisation de certaines variable de programme*/
char grille[LIGNE][COLONNE];
char X='X';
char O='O';
char j1[20];
char j2[20];
int resultat;
char rejouer;



void menu(){

printf("\n *******************************************************\n");
printf(" ********** **********\n");
printf(" *** ***\n");
printf(" * PUISSANCE 4 *\n");
printf(" * Faycal et Mounir *\n");
printf(" *** ***\n");
printf(" ********** **********\n");
printf(" *******************************************************\n");
/*Les joueurs choisissent leurs noms*/
printf("Nom du Joueur1?");
scanf("%s", &j1);
printf("Nom du Joueur2?");
scanf("%s",&j2);
}



void affichagegrille(){
/*Affichage de la grille*/
int i,j;

printf("| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|---|\n");
for(i=0; i<COLONNE; i++){
printf("|");
for(j=0; j<LIGNE; j++){
printf(" %c |", grille[j][i]);
}
printf("\n");
printf("|---|---|---|---|---|---|---|\n");
}
printf("| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n\n\n");
}





void remplissage(){
/*Remplissage de la grille pour le debut du jeu:
chaque cellule contient un espace*/
int m,n,k=1,l;

for(m=0; m<LIGNE; m++){
for(n=0; n<COLONNE; n++){
grille[m][n]=' ';
}
}
}




void coup(char joueur[20], char grille[LIGNE][COLONNE]){

int abscice,p,resultat;
/*Le joueur choisi la colonne*/
printf("A %s de jouer! Entrez les coordonnees: ", joueur);
printf("\nChoisissez une colonne! => ");
scanf("%d", &abscice);
/*Tant que la colonne choisie est pleine, le joueur
doit en choisir une autre*/
while((grille[abscice][0]==X) || (grille[abscice][0]==O)){
printf("La colonne est pleine!\n\n");
printf("Choisissez une colonne! => ");
scanf("%d", &abscice);
}
/*Tant que le joueur n'entre pas une colonne valide,
il doit en choisir une autre*/
while((abscice>6) || (abscice<0)){
printf("Entrez une colonne correct!\n\n");
printf("Choisissez une colonne! => ");
scanf("%d", &abscice);
}
/*Verifie si la premiere case (de la derniere ligne
de la grille) est vide et choisi celle au dessus dans
le cas contraire (qui sera aussi verifiée)*/
for(p=5; p>=0; p--){
if(grille[abscice][p]==' '){
if(joueur==j1){
grille[abscice][p]=X;
break;
}
else{
grille[abscice][p]=O;
break;
}
}
}
}




int verification(char grille[LIGNE][COLONNE]){

int j,k;
/*Verification cellule par celulle et renvoie 1 s'il y a alignement*/
for(j=0; j<LIGNE; j++){
for(k=5; k>=0; k--){
/*Verification d'un alignement vertical*/
if(k>=3){
if((grille[j][k]==X && grille[j][k-1]==X
&& grille[j][k-2]==X && grille[j][k-3]==X)
|| (grille[j][k]==O && grille[j][k-1]==O
&& grille[j][k-2]==O && grille[j][k-3]==O)){
return 1;
}
}
/*Verification d'un alignement horizontal*/
else if(j<=3){
if((grille[j][k]==X && grille[j+1][k]==X
&& grille[j+2][k]==X && grille[j+3][k]==X)
|| (grille[j][k]==O && grille[j+1][k]==O
&& grille[j+2][k]==O && grille[j+3][k]==O)){
return 1;
}
}
/*Verification d'un alignement diagonal de haut en bas*/
else if((k<=2) && (j<=3)){
if((grille[j][k]==X && grille[j+1][k+1]==X
&& grille[j+2][k+2]==X && grille[j+3][k+3]==X)
|| (grille[j][k]==O && grille[j+1][k+1]==O
&& grille[j+2][k+2]==O && grille[j+3][k+3]==O)){
return 1;
}
}
/*Verification d'un alignement diagonal de bas en haut*/
else if((k>=3) && (j<=3)){
if((grille[j][k]==X && grille[j+1][k-1]==X
&& grille[j+2][k-2]==X && grille[j+3][k-3]==X)
|| (grille[j][k]==O && grille[j+1][k-1]==O
&& grille[j+2][k-2]==O && grille[j+3][k-3]==O)){
return 1;
}
}

else{
return 0;
}
}
}
}



int main(){

int compteur=0;
rejouer='o';

menu();

do{
printf("Que la partie commence!\n\n\n\n");
remplissage();
affichagegrille();
do{
coup(j1,grille);
affichagegrille();
compteur++;
if(compteur>=7){
resultat=verification(grille);
if(resultat==1){
printf("Bien joue %s! Vous remportez la partie!",j1);
compteur=43;
}
}

if(resultat!=1){
coup(j2,grille);
affichagegrille(grille);
compteur++;
if(compteur>=8){
resultat=verification(grille);
if(resultat==1){
printf("Bien joue %s! Vous remportez la partie!",j2);
compteur=43;
}
}
}
}
while(compteur<42);

if(compteur==42){
printf("Match Nul!");
}
printf("Voulez-vous rejouer la partie? o=oui ou n=non",rejouer);
scanf("%c",&rejouer);
}
while(rejouer=='o');
}


Par contre j'ai un petit problème pour la vérification et dès que je trouve le problème je vous met le nouveau programme.

Merci à tous pour vos réponses :)

11 réponses

salut;

je vient de lire vos codes c'est génial donc est que vous pouvez m'aider à faire un projet de puissance 4 en c++ ou bien à m'expliquer un peut le code déjà écrit.
3