ziad91
Messages postés6Date d'inscriptionjeudi 17 mai 2007StatutMembreDernière intervention23 novembre 2009
-
14 déc. 2008 à 13:35
ziad91
Messages postés6Date d'inscriptionjeudi 17 mai 2007StatutMembreDernière intervention23 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
ziad91
Messages postés6Date d'inscriptionjeudi 17 mai 2007StatutMembreDernière intervention23 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;
}
ziad91
Messages postés6Date d'inscriptionjeudi 17 mai 2007StatutMembreDernière intervention23 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;
}