[c] prog jeu

Fermé
question - 5 févr. 2008 à 12:38
 question - 6 févr. 2008 à 16:51
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 ();
}
A voir également:

4 réponses

Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 43
5 févr. 2008 à 14:28
Heu... Tu crois vraiment qu'on va examiner tout ton code ?

Essayes d'isoler un peu l'erreur.
0
Slt,

Tu n'aurais pas plutot un code erreur ou un truc du genre a nous donner, le ça ne marche pas est vague...
0
j'ai un warning:

C:\Program Files\Microsoft Visual Studio\MyProjects\nov\037.c(110) : warning C4101: 'x' : unreferenced local variable

je nevois pas où est l'erreur, quand j'éxecute ça marche sans problème jusqu'à que je rentre pour le numéro de ligne le 0!
0
bonjour

j'ai beau chercher je ne trouve pas! on ne peut vraiment pas m'aider??

merci
0