Puissance 4

ziad91 Messages postés 6 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 23 novembre 2009 - 14 déc. 2008 à 13:35
ziad91 Messages postés 6 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 23 novembre 2009 - 14 déc. 2008 à 23:55
Bonjour,
jedoit réalisé un puissance 4 avec le choix de jouer a 2 joueurs ou contre une IA. J'ai bientot fini le 2 joueurs mais le problème c'est que au lieu de jouer l'un àprès l'autre, c'est le premier joueur qui joue tout le temps et aprés qu'il a gagné c'est le deuxième joueur qui joue.
SVP de l'aide

3 réponses

Lemng Messages postés 31 Date d'inscription mardi 3 juillet 2007 Statut Membre Dernière intervention 4 mai 2009
14 déc. 2008 à 13:56
C'est probablement un problème de boucle mais tu devrais nous montrer ton code source

bonne journée
0
ziad91 Messages postés 6 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 23 novembre 2009
14 déc. 2008 à 14:22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* Début du programme principal */
int main()
{/*Déclaration des variables */
char tab[6][6];
char X='X';
char O='O';
int i,j,C1,C2,L0,L1,L2;
int L3,L4,L5,gagn1,gagn2;
char choix=0;
printf("Veuillez choisir un mode de jeux entre:\n");
printf("Deux joueurs: Joueur 1 Vs Joueur 2 -> 1");
printf("\nUn joueur: Joueur 1 Vs Ordi --------> 2\n");
choix=getchar();
switch(choix)
    {
        case '1' :{
                    char J1[20], J2[20]; /*Saisie des noms des deux joueurs: */
                    printf("Vous avez choisi de jouer a deux joueurs");
                    printf("\nEntrez le nom du joueur 1: ");
                    scanf("%s",&J1);
                    printf("\nEntrez le nom du joueur 2: ");
                    scanf("%s",&J2);
                    printf("\nLe combat oppose %s Vs %s",J1,J2);
                    {/* Initialisation du tableau toutes les cases affichent des espaces*/
                                for (i = 0; i < 6; i++)
                                        for (j = 0; j < 6; j++)
                                                tab[i][j] = ' ';
                            {    /*Affichage du plateau de jeu vide*/
                                printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n");
                                printf("|   |   |   |   |   |   |\n");
                            }
                            {
                                for(j=0;j<6;j++)
                                        for(i=0;i<6;i++)
                                                printf("| %c ",tab[i][j]);
                                    {
                                        printf("|\n");
                                        printf("|   |   |   |   |   |   |\n");
                                    }
                                printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n");
                            }
                    }
                                do
                                    {
                                        /*Le 1er joueur joue*/
                                        do
                                        {


                                            L0=0;L1=0;L2=0;L3=0;L4=0;L5=0;
                                            printf("A vous de jouer %s, donner un numero de colonne (de 0 à 5):\n",J1);
                                            scanf("%d",&C1);
                                        /*Test sur la hauteur des colonnes, si elle sont remplies ou non*/
                                          if((C1==0 && L0>5)|| (C1==1 && L1>5) || (C1==2 && L2>5) || (C1==3 && L3>5)  || (C1==4 && L4>5) || (C1==5 && L5>5))
                                          {
                                             printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J1,C1);
                                             C1=-1;
                                          }
                                        }
                                        while(C1<0 || C1>5);
                                    /*Donne le caractère X à la case jouée par le 1er joueur*/
                                       {
                                       if(C1==0)
                                          tab[C1][L0]='X';
                                       if(C1==1)
                                          tab[C1][L1]='X';
                                       if(C1==2)
                                          tab[C1][L2]='X';
                                       if(C1==3)
                                          tab[C1][L3]='X';
                                       if(C1==4)
                                          tab[C1][L4]='X';
                                       if(C1==5)
                                          tab[C1][L5]='X';
                                        }
                                    /*Vérification horizontale pour savoir si le joueur a gagné:
                                    on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois
                                    Si 4 cases qui se suivent sont à X alors gagne prend pour valeur 1*/
                                    for(i=0;i<3;i++)
                                       {
                                          for(j=0;j<6;j++)
                                          {
                                             if(tab[i][j]=='X' && tab[i+1][j]=='X' && tab[i+2][j]=='X' && tab[i+3][j]=='X')
                                                gagn1=1;
                                          }
                                       }
                                     /*Même chose mais verticalement maintenant*/
                                       for(i=0;i<6;i++)
                                       {
                                          for(j=0;j<3;j++)
                                          {
                                             if(tab[i][j]=='X' && tab[i][j+1]=='X' && tab[i][j+2]=='X' && tab[i][j+3]=='X')
                                                gagn1=1;
                                          }
                                       }


                                    /*Et diagonale bas gauche vers haut droit*/
                                       for(i=0;i<6;i++)
                                       {
                                          for(j=0;j<6;j++)
                                          {
                                             if(tab[i][j]=='X' && tab[i+1][j+1]=='X' && tab[i+2][j+2]=='X' && tab[i+3][j+3]=='X')
                                                gagn1=1;
                                          }
                                       }
                                    /*Même chose pour les diagonales bas droite vers haut gauche*/
                                       for(j=0;j<3;j++)
                                       {
                                          for(i=5;i>=0;i--)
                                          {
                                             if(tab[i][j]=='X' && tab[i-1][j+1]=='X' && tab[i-2][j+2]=='X' && tab[i-3][j+3]=='X')
                                                gagn1=1;
                                          }
                                       }
                                     /* Affichage de la grille */
                                       printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n");
                                       printf("|   |   |   |   |   |   |\n");
                                       for(j=5;j>=0;j--)
                                       {
                                          for(i=0;i<6;i++)
                                          {
                                             printf("| %c ",tab[i][j]);
                                          }
                                          printf("|\n");
                                          printf("|   |   |   |   |   |   |\n");
                                       }
                                       printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n");
                                    /* On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:*/
                                       if(C1==0)
                                          tab[C1][L0++];
                                       if(C1==1)
                                          tab[C1][L1++];
                                       if(C1==2)
                                          tab[C1][L2++];
                                       if(C1==3)
                                          tab[C1][L3++];
                                       if(C1==4)
                                          tab[C1][L4++];
                                       if(C1==5)
                                          tab[C1][L5++];
                                    /*Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle*/
                                       if(gagn1==1)
                                       {
                                          printf("Le gagnant est %s!!!\n",J1);
                                          break;
                                       }
                                    }
                                    while(tab[i][j]==' ');
                                    /*On recommence pour le joueur 2*/
                                do
                                    {
                                        /*Le 2eme joueur joue*/
                                        do
                                        {
                                          L0=0;L1=0;L2=0;L3=0;L4=0;L5=0;
                                          printf("A vous de jouer %s, donner un numero de colonne (de 0 à 5):\n",J2);
                                          scanf("%d",&C2);
                                        /*Test sur la hauteur des colonnes, si elle sont remplies ou non*/
                                          if((C2==0 && L0>5)|| (C2==1 && L1>5) || (C2==2 && L2>5) || (C2==3 && L3>5)  || (C2==4 && L4>5) || (C2==5 && L5>5))
                                          {
                                             printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J2,C2);
                                             C2=-1;
                                          }
                                        }
                                        while(C2<0 || C2>5);
                                    /*Donne le caractère O à la case jouée par le 2eme joueur*/
                                       if(C2==0)
                                          tab[C2][L0]='O';
                                       if(C2==1)
                                          tab[C2][L1]='O';
                                       if(C2==2)
                                          tab[C2][L2]='O';
                                       if(C2==3)
                                          tab[C2][L3]='O';
                                       if(C2==4)
                                          tab[C2][L4]='O';
                                       if(C2==5)
                                          tab[C2][L5]='O';
                                    /*Vérification horizontale pour savoir si le joueur a gagné:
                                    on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois
                                    Si 4 cases qui se suivent sont à O alors gagn2 prend pour valeur 1*/
                                    for(i=0;i<3;i++)
                                       {
                                          for(j=0;j<6;j++)
                                          {
                                             if(tab[i][j]=='O' && tab[i+1][j]=='O' && tab[i+2][j]=='O' && tab[i+3][j]=='O')
                                                gagn2=1;
                                          }
                                       }
                                     /*Même chose mais verticalement maintenant*/
                                       for(i=0;i<6;i++)
                                       {
                                          for(j=0;j<3;j++)
                                          {
                                             if(tab[i][j]=='O' && tab[i][j+1]=='O' && tab[i][j+2]=='O' && tab[i][j+3]=='O')
                                                gagn2=1;
                                          }
                                       }


                                    /*Et diagonale bas gauche vers haut droit*/
                                       for(i=0;i<6;i++)
                                       {
                                          for(j=0;j<6;j++)
                                          {
                                             if(tab[i][j]=='O' && tab[i+1][j+1]=='O' && tab[i+2][j+2]=='O' && tab[i+3][j+3]=='O')
                                                gagn2=1;
                                          }
                                       }
                                    /*Même chose pour les diagonales bas droite vers haut gauche*/
                                       for(j=0;j<3;j++)
                                       {
                                          for(i=5;i>=0;i--)
                                          {
                                             if(tab[i][j]=='O' && tab[i-1][j+1]=='O' && tab[i-2][j+2]=='O' && tab[i-3][j+3]=='O')
                                                gagn2=1;
                                          }
                                       }
                                     /* Affichage de la grille */
                                       printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n");
                                       printf("|   |   |   |   |   |   |\n");
                                       for(j=5;j>=0;j--)
                                       {
                                          for(i=0;i<6;i++)
                                          {
                                             printf("| %c ",tab[i][j]);
                                          }
                                          printf("|\n");
                                          printf("|   |   |   |   |   |   |\n");
                                       }
                                       printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n");
                                    /* On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:*/
                                       if(C2==0)
                                          tab[C2][L0++];
                                       if(C2==1)
                                          tab[C2][L1++];
                                       if(C2==2)
                                          tab[C2][L2++];
                                       if(C2==3)
                                          tab[C2][L3++];
                                       if(C2==4)
                                          tab[C2][L4++];
                                       if(C2==5)
                                          tab[C2][L5++];
                                    /*Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle*/
                                       if(gagn2==1)
                                       {
                                          printf("Le gagnant est %s!!!\n",J2);
                                          break;
                                       }
                                    }
                  while(tab[i][j]==' ');
                    break;
                  }
        default : printf("Erreur de saisie du choix!");
    }
return 0;
}
0
ziad91 Messages postés 6 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 23 novembre 2009
14 déc. 2008 à 23:55
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//Début du programme principal
int main()
{//Déclaration des variables
char tab[8][6];
char X='X';
char O='O';
int i,j,C1,C2,L0,L1,L2,L3,L4,L5;
int gagn1=0;
int gagn2=0;
int jeux=0;
char L,x;
char choix=0;
printf("Veuillez choisir un mode de jeux entre:\n");
printf("Deux joueurs: Joueur 1 Vs Joueur 2 -> 1");
printf("\nUn joueur: Joueur 1 Vs Ordi --------> 2\n");
choix=getchar();
switch(choix)
    {
        case '1' :{
                    char J1[20], J2[20]; //Saisie des noms des deux joueurs:
                    printf("Vous avez choisi de jouer a deux joueurs");
                    printf("\nEntrez le nom du joueur 1: ");
                    scanf("%s",&J1);
                    printf("\nEntrez le nom du joueur 2: ");
                    scanf("%s",&J2);
                    printf("\nLe combat oppose %s Vs %s\n",J1,J2);
                    {//Initialisation du tableau toutes les cases affichent des espaces
                                for (i = 0; i < 8; i++)
                                        for (j = 0; j < 6; j++)
                                                tab[i][j] = ' ';
                            {    //Affichage du plateau de jeu vide
                                printf("|   | 0 | 1 | 2 | 3 | 4 | 5 |   |\n");
                                printf("---------------------------------\n");
                                printf("| a |   |   |   |   |   |   | a |\n");
                                printf("---------------------------------\n");
                                printf("| b |   |   |   |   |   |   | b |\n");
                                printf("---------------------------------\n");
                                printf("| c |   |   |   |   |   |   | c |\n");
                                printf("---------------------------------\n");
                                printf("| d |   |   |   |   |   |   | d |\n");
                                printf("---------------------------------\n");
                                printf("| e |   |   |   |   |   |   | e |\n");
                                printf("---------------------------------\n");
                                printf("| f |   |   |   |   |   |   | f |\n");
                                printf("---------------------------------");
                            }
                            {   for(i=0;i<8;i++)
                                        for(j=0;j<6;j++)
                                            {
                                                if(j=0)
                                                    x='a';
                                                if(j=1)
                                                    x='b';
                                                if(j=2)
                                                    x='c';
                                                if(j=3)
                                                    x='d';
                                                if(j=4)
                                                    x='e';
                                                if(j=5)
                                                    x='f';
                                            }
                                                printf("| %c |",tab[i][j]);
                                printf("|   | 0 | 1 | 2 | 3 | 4 | 5 |   |\n");
                                printf("---------------------------------\n");
                            }
                    }
                                do
                                    {
                                        //Le 1er joueur joue
                                        do
                                        {


                                            L0=0;L1=0;L2=0;L3=0;L4=0;L5=0;
                                            printf("A vous de jouer %s, donner une lettre de ligne (de a à f) et un numero de colonne (de 1 à 6):\n",J1);
                                            scanf("&c%d",&L,&C1);
                                        //Test sur la hauteur des colonnes, si elle sont remplies ou non
                                          if((C1==1 && L0>5)|| (C1==2 && L1>5) || (C1==3 && L2>5) || (C1==4 && L3>5)  || (C1==5 && L4>5) || (C1==6 && L5>5))
                                          {
                                             printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J1,C1);
                                             C1=-1;
                                          }
                                        }
                                        while((C1<1 || C1>6));
                                    //Donne le caractère X à la case jouée par le 1er joueur
                                       {
                                       if(C1==1)
                                          tab[C1][L0]='X';
                                       if(C1==2)
                                          tab[C1][L1]='X';
                                       if(C1==3)
                                          tab[C1][L2]='X';
                                       if(C1==4)
                                          tab[C1][L3]='X';
                                       if(C1==5)
                                          tab[C1][L4]='X';
                                       if(C1==6)
                                          tab[C1][L5]='X';
                                        }
                                        //On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:
                                       if(C1==1)
                                          tab[C1][L0++];
                                       if(C1==2)
                                          tab[C1][L1++];
                                       if(C1==3)
                                          tab[C1][L2++];
                                       if(C1==4)
                                          tab[C1][L3++];
                                       if(C1==5)
                                          tab[C1][L4++];
                                       if(C1==6)
                                          tab[C1][L5++];
                                     //Affichage de la grille
                                       printf("|   | 0 | 1 | 2 | 3 | 4 | 5 |   |\n");
                                       for(j=5;j>=0;j--)
                                       {
                                          for(i=0;i<8;i++)
                                          {
                                                tab[0][5]=tab[7][5]='a';
                                                tab[0][4]=tab[7][4]='b';
                                                tab[0][3]=tab[7][3]='c';
                                                tab[0][2]=tab[7][2]='d';
                                                tab[0][1]=tab[7][1]='e';
                                                tab[0][0]=tab[7][0]='f';
                                             printf("| %c ",tab[i][j]);
                                          }
                                          printf("|\n");
                                       }
                                       printf("|   | 0 | 1 | 2 | 3 | 4 | 5 |   |\n\n");
                                    /*Vérification horizontale pour savoir si le joueur a gagné:
                                    on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois
                                    Si 4 cases qui se suivent sont à X alors gagne prend pour valeur 1*/
                                    for(i=1;i<4;i++)
                                       {
                                          for(j=0;j<6;j++)
                                          {
                                             if(tab[i][j]=='X' && tab[i+1][j]=='X' && tab[i+2][j]=='X' && tab[i+3][j]=='X')
                                                gagn1=1;
                                          }
                                       }
                                     //Même chose mais verticalement maintenant
                                       for(i=1;i<7;i++)
                                       {
                                          for(j=0;j<3;j++)
                                          {
                                             if(tab[i][j]=='X' && tab[i][j+1]=='X' && tab[i][j+2]=='X' && tab[i][j+3]=='X')
                                                gagn1=1;
                                          }
                                       }


                                    //Et diagonale bas gauche vers haut droit
                                       for(i=1;i<4;i++)
                                       {
                                          for(j=0;j<3;j++)
                                          {
                                             if(tab[i][j]=='X' && tab[i+1][j+1]=='X' && tab[i+2][j+2]=='X' && tab[i+3][j+3]=='X')
                                                gagn1=1;
                                          }
                                       }
                                    //Même chose pour les diagonales bas droite vers haut gauche
                                       for(j=0;j<3;j++)
                                       {
                                          for(i=6;i>3;i--)
                                          {
                                             if(tab[i][j]=='X' && tab[i-1][j+1]=='X' && tab[i-2][j+2]=='X' && tab[i-3][j+3]=='X')
                                                gagn1=1;
                                          }
                                       }
                                    //Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle
                                       if(gagn1==1)
                                       {
                                          printf("Le gagnant est %s!!!\n",J1);
                                          break;
                                       }
                                    //On recommence pour le joueur 2
                                        //Le 2eme joueur joue
                                        do
                                        {
                                          L0=0;L1=0;L2=0;L3=0;L4=0;L5=0;
                                          printf("A vous de jouer %s, donner une lettre de ligne (de a à f) et un numero de colonne (de 1 à 6):\n",J2);
                                            scanf("&c%d",&L,&C2);
                                        //Test sur la hauteur des colonnes, si elle sont remplies ou non
                                          if((C2==0 && L0>5)|| (C2==1 && L1>5) || (C2==2 && L2>5) || (C2==3 && L3>5)  || (C2==4 && L4>5) || (C2==5 && L5>5))
                                          {
                                             printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J2,C2);
                                             C2=-1;
                                          }
                                        }
                                        while(C2<1 || C2>6);
                                    //Donne le caractère O à la case jouée par le 2eme joueur
                                       if(C2==0)
                                          tab[C2][L0]='O';
                                       if(C2==1)
                                          tab[C2][L1]='O';
                                       if(C2==2)
                                          tab[C2][L2]='O';
                                       if(C2==3)
                                          tab[C2][L3]='O';
                                       if(C2==4)
                                          tab[C2][L4]='O';
                                       if(C2==5)
                                          tab[C2][L5]='O';
                                    /* On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:*/
                                       if(C2==0)
                                          tab[C2][L0++];
                                       if(C2==1)
                                          tab[C2][L1++];
                                       if(C2==2)
                                          tab[C2][L2++];
                                       if(C2==3)
                                          tab[C2][L3++];
                                       if(C2==4)
                                          tab[C2][L4++];
                                       if(C2==5)
                                          tab[C2][L5++];
                                    /* Affichage de la grille */
                                       printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n");
                                       printf("|   |   |   |   |   |   |\n");
                                       for(j=5;j>=0;j--)
                                       {
                                          for(i=0;i<6;i++)
                                          {
                                             printf("| %c ",tab[i][j]);
                                          }
                                          printf("|\n");
                                          printf("|   |   |   |   |   |   |\n");
                                       }
                                       printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n");
                                    /*Vérification horizontale pour savoir si le joueur a gagné:
                                    on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois
                                    Si 4 cases qui se suivent sont à O alors gagn2 prend pour valeur 1*/
                                    for(i=0;i<3;i++)
                                       {
                                          for(j=0;j<6;j++)
                                          {
                                             if(tab[i][j]=='O' && tab[i+1][j]=='O' && tab[i+2][j]=='O' && tab[i+3][j]=='O')
                                                gagn2=1;
                                          }
                                       }
                                     /*Même chose mais verticalement maintenant*/
                                       for(i=0;i<6;i++)
                                       {
                                          for(j=0;j<3;j++)
                                          {
                                             if(tab[i][j]=='O' && tab[i][j+1]=='O' && tab[i][j+2]=='O' && tab[i][j+3]=='O')
                                                gagn2=1;
                                          }
                                       }


                                    /*Et diagonale bas gauche vers haut droit*/
                                       for(i=0;i<6;i++)
                                       {
                                          for(j=0;j<6;j++)
                                          {
                                             if(tab[i][j]=='O' && tab[i+1][j+1]=='O' && tab[i+2][j+2]=='O' && tab[i+3][j+3]=='O')
                                                gagn2=1;
                                          }
                                       }
                                    /*Même chose pour les diagonales bas droite vers haut gauche*/
                                       for(j=0;j<3;j++)
                                       {
                                          for(i=5;i>=0;i--)
                                          {
                                             if(tab[i][j]=='O' && tab[i-1][j+1]=='O' && tab[i-2][j+2]=='O' && tab[i-3][j+3]=='O')
                                                gagn2=2;
                                          }
                                       }
                                    /*Test pour savoir si le joueur 2 a gagné, si c'est le cas alors arret de la boucle*/
                                       if(gagn2==2)
                                       {
                                          printf("Le gagnant est %s!!!\n",J2);
                                          break;
                                       }
                                    }
                  while(gagn1!=1 || gagn2!=2);
                    break;
                  }
0
Rejoignez-nous