#include #include #include /* 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'); }