rendered paste body#include<stdio.h>
#include<stdlib.h>
#include<math.h>
/* Début du programme principal */
main()
{
/*Déclaration des variables */
int i,j,num;
int h0,h1,h2,h3,h4,h5,h6,num1;
int jeu[7][6];
int gagne, gagne2;
char nom1[20], nom2[20],rep,o;
/*Tant que on veut jouer le programme se lance*/
do
{
/*Initialisation de certaines variables*/
gagne=0;
gagne2=0;
h0=0;h1=0;h2=0;h3=0;h4=0;h5=0;h6=0;
/*Impression de la page de presentation:*/
printf("\n\n\n\n");
printf("\t\t********************************************\n");
printf("\t\t* *\n");
printf("\t\t* BIENVENUE DANS LE PUISSANCE 4 *\n");
printf("\t\t* *\n");
printf("\t\t* DE FANF ET MAXOU *\n");
printf("\t\t* *\n");
printf("\t\t********************************************");
/*Saisie des noms des deux joueurs: */
printf("\n\n\n\tNom du premier joueur:\n");
scanf("%s",nom1);
printf("\n\n");
printf("\n\n\tNom du deuxieme joueur:\n");
scanf("%s",nom2);
printf("\n\n");
/* Initialisation du tableau toutes les cases prennent la valeur 0*/
for(i=0;i<7;i++)
{
for(j=0;j<6;j++)
{
jeu[i][j]=0;
}
}
/*Affichage du plateau de jeu vide*/
printf("| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<7;i++)
{
printf("| %d ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|---|\n");
}
printf("\n| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n\n");
/*Tant qu'un joueur n'a pas gagné le programme demande de jouer*/
do
{
/*Le joueur 1 joue*/
do
{
printf("A vous de jouer %s, donner un numero de colonne (de 0 à 6):\n",nom1);
scanf("%d",&num);
printf("\n");
/*Test sur la hauteur des colonnes, si elle sont remplies ou non*/
if((num==0 && h0>5)|| (num==1 && h1>5) || (num==2 && h2>5) || (num==3 && h3>5) || (num==4 && h4>5) || (num==5 && h5>5) || (num==6 && h6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",num,nom1,num);
num = -1;
}
}while(num<0 || num>6);
/*Donne la valeur 1 à la case jouée par le joueur 1*/
if(num==0)
jeu[num][h0]=1;
if(num==1)
jeu[num][h1]=1;
if(num==2)
jeu[num][h2]=1;
if(num==3)
jeu[num][h3]=1;
if(num==4)
jeu[num][h4]=1;
if(num==5)
jeu[num][h5]=1;
if(num==6)
jeu[num][h6]=1;
/*Vérification horizontale pour savoir si le joueur a gagné:
on balaye toutes les lignes de 0 à 6 en vérifiant 4 cases à chaque fois
Si 4 cases qui se suivent valent 1 alors gagne prend pour valeur 1*/ for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==1 && jeu[i+1][j]==1 && jeu[i+2][j]==1 && jeu[i+3][j]==1)
gagne=1;
}
}
/*Même chose mais verticalement maintenant*/
for(i=0;i<7;i++)
{
for(j=0;j<3;j++)
{
if(jeu[i][j]==1 && jeu[i][j+1]==1 && jeu[i][j+2]==1 && jeu[i][j+3]==1)
gagne=1;
}
}
/*Et diagonale bas gauche vers haut droit*/
for(i=0;i<7;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==1 && jeu[i+1][j+1]==1 && jeu[i+2][j+2]==1 && jeu[i+3][j+3]==1)
gagne=1;
}
}
/*Même chose pour les diagonales bas droite vers haut gauche*/
for(j=0;j<6;j++)
{
for(i=6;i>=0;i--)
{
if(jeu[i][j]==1 && jeu[i-1][j+1]==1 && jeu[i-2][j+2]==1 && jeu[i-3][j+3]==1)
gagne=1;
}
}
/* Affichage de la grille */
printf("| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<7;i++)
{
printf("| %d ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|---|\n");
}
printf("\n| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n\n");
/* On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:*/
if(num==0)
jeu[num][h0++];
if(num==1)
jeu[num][h1++];
if(num==2)
jeu[num][h2++];
if(num==3)
jeu[num][h3++];
if(num==4)
jeu[num][h4++];
if(num==5)
jeu[num][h5++];
if(num==6)
jeu[num][h6++];
/*Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle*/
if(gagne==1)
{
printf("%s a gagne!!!\n bravo!!!\n",nom1);
break;
}
/*On recommence pour le joueur 2*/
do
{
printf("A vous de jouer %s, donner un numero de colonne (de 0 à 6):\n",nom2);
scanf("%d",&num1);
printf("\n");
if((num1==0 && h0>5)|| (num1==1 && h1>5) || (num1==2 && h2>5) || (num1==3 && h3>5) || (num1==4 && h4>5) || (num1==5 && h5>5) || (num1==6 && h6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",num1,nom2,num1);
num1 = -1;
}
}while(num1<0 || num1>6);
if(num1==0)
jeu[num1][h0]=2;
if(num1==1)
jeu[num1][h1]=2;
if(num1==2)
jeu[num1][h2]=2;
if(num1==3)
jeu[num1][h3]=2;
if(num1==4)
jeu[num1][h4]=2;
if(num1==5)
jeu[num1][h5]=2;
if(num1==6)
jeu[num1][h6]=2;
for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==2 && jeu[i+1][j]==2 && jeu[i+2][j]==2 && jeu[i+3][j]==2)
gagne=2;
}
}
for(i=0;i<7;i++)
{
for(j=0;j<3;j++)
{
if(jeu[i][j]==2 && jeu[i][j+1]==2 && jeu[i][j+2]==2 && jeu[i][j+3]==2)
gagne=2;
}
}
for(i=0;i<7;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==2 && jeu[i+1][j+1]==2 && jeu[i+2][j+2]==2 && jeu[i+3][j+3]==2)
gagne=2;
}
}
for(j=0;j<6;j++)
{
for(i=6;i>=0;i--)
{
if(jeu[i][j]==2 && jeu[i-1][j+1]==2 && jeu[i-2][j+2]==2 && jeu[i-3][j+3]==2)
gagne=2;
}
}
printf("| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<7;i++)
{
printf("| %d ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|---|\n");
}
printf("\n| 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n\n");
if(num1==0)
jeu[num1][h0++];
if(num1==1)
jeu[num1][h1++];
if(num1==2)
jeu[num1][h2++];
if(num1==3)
jeu[num1][h3++];
if(num1==4)
jeu[num1][h4++];
if(num1==5)
jeu[num1][h5++];
if(num1==6)
jeu[num1][h6++];
if(gagne==2)
{
printf("%s a gagne!!!\n bravo!!!\n",nom2);
break;
}
} while(gagne!=1 || gagne2!=2);
printf("voulez vous refaire une partie ? ('o' ou 'n')\n");
scanf("%s",&rep);
printf("\n\n\n\n");
}while(rep=='o');
}