Bonjour,
voici mon code 'puissance 4' en c , le problème c'est que quand je donne les chiffres de 1 à 6 ça va mais dés que je met 0, il s'arrête et ne marche plus!!
on peut m'aider à résoudre le problème?
#include <conio.h>
#include <stdio.h>
void dessine_grille(char grille[7][6])
{ int i,j;
for(j=5;j>=0;j--)
{
for(i=0;i<7;i++)
{
printf("%c",grille[i][j]);
}
printf("\n");
;
}
printf("\n\n\n");
}
int fonctionquifaitgagnerjoueur1 (char grille[7][6])
{ int i,j,gagne;
for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
if(grille[i][j]=='x' && grille[i+1][j]=='x' && grille[i+2][j]=='x' && grille[i+3][j]=='x')
gagne=1;
}
}
/*On vérifie maintenant verticalement pour savoir si le joueur a gagné dc si 4 cases verticales se suivent et valent 1*/
for(i=0;i<7;i++)
{
for(j=0;j<3;j++)
{
if(grille[i][j]=='x' && grille[i][j+1]=='x' && grille[i][j+2]=='x' && grille[i][j+3]=='x')
gagne=1;
}
}
/*Vérification diagonale bas gauche vers haut droit*/
for(i=0;i<7;i++)
{
for(j=0;j<6;j++)
{
if(grille[i][j]=='x' && grille[i+1][j+1]=='x' && grille[i+2][j+2]=='x' && grille[i+3][j+3]=='x')
gagne=1;
}
}
/*Vérification diagonale bas droite vers haut gauche*/
for(j=0;j<6;j++)
{
for(i=6;i>=0;i--)
{
if(grille[i][j]=='x' && grille[i-1][j+1]=='x' && grille[i-2][j+2]=='x' && grille[i-3][j+3]=='x')
gagne=1;
}
}
return(gagne);
}
int fonctionquifaitgagnerjoueur2 (char grille[7][6])
{ int i,j,gagne;
for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
if(grille[i][j]=='o' && grille[i+1][j]=='o' && grille[i+2][j]=='o' && grille[i+3][j]=='o')
gagne=2;
}
}
/*On vérifie maintenant verticalement pour savoir si le joueur a gagné dc si 4 cases verticales se suivent et valent 1*/
for(i=0;i<7;i++)
{
for(j=0;j<3;j++)
{
if(grille[i][j]=='o' && grille[i][j+1]=='o' && grille[i][j+2]=='o' && grille[i][j+3]=='o')
gagne=2;
}
}
/*Vérification diagonale bas gauche vers haut droit*/
for(i=0;i<7;i++)
{
for(j=0;j<6;j++)
{
if(grille[i][j]=='o' && grille[i+1][j+1]=='o' && grille[i+2][j+2]=='o' && grille[i+3][j+3]=='o')
gagne=2;
}
}
/*Vérification diagonale bas droite vers haut gauche*/
for(j=0;j<6;j++)
{
for(i=6;i>=0;i--)
{
if(grille[i][j]=='o' && grille[i-1][j+1]=='o' && grille[i-2][j+2]=='o' && grille[i-3][j+3]=='o')
gagne=2;
}
}
return(gagne);
}
void main (void)
{
char grille[7][6];
int nb_p,i,j,x,c,n,ligne1,ligne2,col0,col1,col2,col3,col4,col5,col6,gagne,reponse;
char nomjoueur1 [100],nomjoueur2[100],temp;
do //do d'une super boucle
{
// initialisation des variables
nb_p=0 ;
gagne=0;
n=0;
c=0;
col1=0;
col2=0;
col3=0;
col4=0;
col5=0;
col6=0;
// saisit du nom des joueurs
printf ("nom joueur 1\n");
scanf ("%s",&nomjoueur1);
scanf ("%c",&temp);
printf ("nom joueur 2\n");
scanf ("%s",&nomjoueur2);
scanf ("%c",&temp);
//initialisation du tableau
for (i=0;i<7;i++)
{
for (j=0;j<6;j++)
grille[i][j]='t';
}
dessine_grille( grille);
do
{
//premier joueur joue
do
{
printf ("%s dans quel colonne desirez vous jouer\n", nomjoueur1);
scanf ("%d",&ligne1);
/*Test sur la hauteur des colonnes, si elle sont remplies ou non*/
if((ligne1==0 && col0>5)|| (ligne1==1 && col1>5) || (ligne1==2 && col2>5) || (ligne1==3 && col3>5) || (ligne1==4 && col4>5) || (ligne1==5 && col5>5) || (ligne1==6 && col6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",ligne1,nomjoueur1,ligne1);
ligne1 = -1000; //donne un chiffre de ligne négative pour lui faire refaire la boucle
}
}
while (ligne1<0 || ligne1>7);
//place pion
if(ligne1==0)
grille[ligne1][col0]='x';
if(ligne1==1)
grille[ligne1][col1]='x';
if(ligne1==2)
grille[ligne1][col2]='x';
if(ligne1==3)
grille[ligne1][col3]='x';
if(ligne1==4)
grille[ligne1][col4]='x';
if(ligne1==5)
grille[ligne1][col5]='x';
if(ligne1==6)
grille[ligne1][col6]='x';
// test pour voir si le joueur a gagné
fonctionquifaitgagnerjoueur1 (grille);
dessine_grille(grille);
//Désigne une ligne deja prise par un pion deja placé
if(ligne1==0)
grille[ligne1][col0++];
if(ligne1==1)
grille[ligne1][col1++];
if(ligne1==2)
grille[ligne1][col2++];
if(ligne1==3)
grille[ligne1][col3++];
if(ligne1==4)
grille[ligne1][col4++];
if(ligne1==5)
grille[ligne1][col5++];
if(ligne1==6)
grille[ligne1][col6++];
if(gagne==1)
{
printf("C'est %s qui a gagne la partie !!!\n \n",nomjoueur1);
printf ("Par contre toi, %s tu est un loozer",nomjoueur2);
break;
}
//début second joueur
do
{
printf ("%s dans quel colonne desirez vous jouer\n", nomjoueur2);
scanf ("%d",&ligne2);
scanf ("%c",&temp);
/*Test sur la hauteur des colonnes, si elle sont remplies ou non*/
if((ligne2==0 && col0>5)|| (ligne2==1 && col1>5) || (ligne2==2 && col2>5) || (ligne2==3 && col3>5) || (ligne2==4 && col4>5) || (ligne2==5 && col5>5) || (ligne2==6 && col6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",ligne2,nomjoueur2,ligne2);
ligne2 = -1000; //donne un chiffre de ligne négative pour lui faire refaire la boucle
}
}
while ((ligne2<0) || (ligne2>7));
//place pion
if(ligne2==0)
grille[ligne2][col0]='o';
if(ligne2==1)
grille[ligne2][col1]='o';
if(ligne2==2)
grille[ligne2][col2]='o';
if(ligne2==3)
grille[ligne2][col3]='o';
if(ligne2==4)
grille[ligne2][col4]='o';
if(ligne2==5)
grille[ligne2][col5]='o';
if(ligne2==6)
grille[ligne2][col6]='o';
// test pour voir si le joueur a gagné
fonctionquifaitgagnerjoueur2 (grille);
dessine_grille(grille);
//Désigne une ligne deja prise par un pion deja placé
if(ligne2==0)
grille[ligne2][col0++];
if(ligne2==1)
grille[ligne2][col1++];
if(ligne2==2)
grille[ligne2][col2++];
if(ligne2==3)
grille[ligne2][col3++];
if(ligne2==4)
grille[ligne2][col4++];
if(ligne2==5)
grille[ligne2][col5++];
if(ligne2==6)
grille[ligne2][col6++];
if(gagne==2)
{
printf("C'est %s qui a gagne la partie !!!\n \n",nomjoueur2);
printf ("Par contre toi, %s tu est un loozer",nomjoueur1);
break;
}
}
while (gagne!=1 || gagne!=2);
if (gagne==2)
{ printf("Tu veut ta revanche %s oui('o') ou non('n') ???\n ",nomjoueur1);
scanf ("%s",&reponse);
}
else
{ printf("Tu veut ta revanche %s oui('o') ou non('n') ???\n ",nomjoueur2);
scanf ("%s",&reponse);
}
}
while (reponse!='n');
getch ();
}