//---------------------------------------------------------------------- int main() { P4 p=NouveauP(); Bool iQuit=0,iFermer=0; int c; srand(time(NULL)); printf("\n Bienvenue dans le puissance 4 \n"); while (iFermer!=1) { iQuit=0; printf("choisisez un mode \n 1 -> 1 Joueur \n 2 -> 2 joueurs \n 3 -> Quitter\n"); scanf("%d",&c); switch(c) { case 2 :while(iQuit==0) { AffichageGrille(p); if(Aquiletour(p)) { printf("\n>>>>> Joueur 1 à vous <<<<<\n Entrer un numero de colonne pour inserer votre pion \n"); c=recuperCol(); if((AlignHoriz(p,c)>=4)||(AlignVert(p,c)>=4)||(AlignDiagDroite(p,c)>=4)||(AlignDiagGauche(p,c)>=4)) { printf("\n>>>>>$$$$$$ Jackpot Joueur 1 $$$$$$ <<<<< \n"); iQuit=1; } else { p=AjouterPion(p,c,1); } } else { printf("\n>>>>> Joueur 2 à vous <<<<<\n Entrer un numero de colonne pour inserer votre pion \n"); c=recuperCol(); if((AlignHoriz(p,c)>=4)||(AlignVert(p,c)>=4)||(AlignDiagDroite(p,c)>=4)||(AlignDiagGauche(p,c)>=4)) { printf("\n>>>>> $$$$$$ Jackpot Joueur 2 $$$$$$ <<<<< \n"); iQuit=1; } else { p=AjouterPion(p,c,0); } } } p=vider_grille(p); break; case 1: while(iQuit==0) { AffichageGrille(p); if(Aquiletour(p)) { printf("\n>>>>> Joueur 1 à vous <<<<<\n Entrer un numero de colonne pour inserer votre pion \n"); c=recuperCol(); if((AlignHoriz(p,c)>=4)||(AlignVert(p,c)>=4)||(AlignDiagDroite(p,c)>=4)||(AlignDiagGauche(p,c)>=4)) { printf("\n>>>>>$$$$$$ Jackpot Joueur 1 $$$$$$ <<<<< \n"); iQuit=1; } else { p=AjouterPion(p,c,1); } } else { printf(" \n L'IA va jouer patienter. \n"); if((AlignHoriz(p,Contrer(p))>=4)||(AlignVert(p,Contrer(p))>=4)||(AlignDiagDroite(p,Contrer(p))>=4)||(AlignDiagGauche(p,Contrer(p))>=4)||(AlignHoriz(p,Jouer(p))>=4)||(AlignVert(p,Jouer(p))>=4)||(AlignDiagDroite(p,Jouer(p))>=4)||(AlignDiagGauche(p,Jouer(p))>=4)) { printf("\n>>>>> $$$$$$ Jackpot IA $$$$$$ <<<<< \n"); iQuit=1; } else { if(MaxContrer(p)>3) { p=AjouterPion(p,Contrer(p),0); } else { if(MaxJouer(p)>3) { p=AjouterPion(p,Jouer(p),0); } else { if(MaxContrer(p)>2) { p=AjouterPion(p,Contrer(p),0); } else { if(MaxJouer(p)>2) { p=AjouterPion(p,Jouer(p),0); } else { p=AjouterPion(p,randIA(),0); } } } } } } } p=vider_grille(p); break; case 3: iFermer=1; break; case 4: while(iQuit!=1) { AffichageGrille(p); if(Aquiletour(p)) { printf("\n>>>>> Joueur 1 à vous <<<<<\n Entrer un numero de colonne pour inserer votre pion \n"); c=recuperCol(); if((AlignHoriz(p,c)>=4)||(AlignVert(p,c)>=4)||(AlignDiagDroite(p,c)>=4)||(AlignDiagGauche(p,c)>=4)) { printf("\n>>>>>$$$$$$ Jackpot Joueur 1 $$$$$$ <<<<< \n"); iQuit=1; } else { p=AjouterPion(p,c,1); } } else { printf("\n>>>>> Joueur Ordi à vous <<<<<\n Entrer un numero de colonne pour inserer votre pion \n"); c=score(p); printf("\n score : %d \n",c); if((AlignHoriz(p,c)>=4)||(AlignVert(p,c)>=4)||(AlignDiagDroite(p,c)>=4)||(AlignDiagGauche(p,c)>=4)) { printf("\n>>>>>$$$$$$ Jackpot Joueur Ordi $$$$$$ <<<<< \n"); iQuit=1; } else { p=AjouterPion(p,c,1); } } } p=vider_grille(p); break; default : printf(" \n MAUVAIS NOMBRE\n"); break; } } free(p->Tour->v); free(p->Tour); free(p); return 0; }
void Edit(Carte* carte, Position* bender, Position* wallE, Position* r2d2, Position* marvin){ int i,j,n; Wall Mur; char move; char temp; Position curseur; Position tempCur; // Creation du cadre for(i=0;i<33;i++){ for(j=0;j<33;j++){ carte->Grille[0][j]='#'; carte->Grille[i][0]='#'; carte->Grille[i][32]='#'; carte->Grille[32][j]='#'; } } // Remplissage interne blanc for(i=1;i<32;i++){ for(j=1;j<32;j++){ carte->Grille[i][j]=' '; } } // Position initiale des robots bender->y=99; bender->x=99; wallE->y=99; wallE->x=99; r2d2->y=99; r2d2->x=99; marvin->y=99; marvin->x=99; // Position Arrive carte->Arrive.x=99; carte->Arrive.y=99; for(i=0;i<4;i++){ carte->Cible[i].y=99; carte->Cible[i].x=99; } // Placement des murs do{ do{ AffichageGrille(carte, *bender, *wallE, *r2d2, *marvin); printf("\nChoix de l'orientation du mur :\n"); printf("[v] Mur Vertical [h] Mur Horizontal [p] Mettre les Robots\n"); scanf("%c", &Mur.dir); }while(Mur.dir!='v'&&Mur.dir!='h'&&Mur.dir!='p'); if(Mur.dir!='p'){ curseur.x=2; curseur.y=2; Mur.size=3; carte->Grille[curseur.y][curseur.x]='#'; do{ do{ if(Mur.dir=='v'){ for(i=0;i<Mur.size;i++){ carte->Grille[(curseur.y)+i][curseur.x]='#'; } } if(Mur.dir=='h'){ for(i=0;i<Mur.size;i++){ carte->Grille[curseur.y][(curseur.x)+i]='#'; } } AffichageGrille(carte, *bender, *wallE, *r2d2, *marvin); printf("\nTaille du mur :\n"); printf("[a] Augmenter [e] Diminuer\n"); printf("\n\nDeplacer le mur :\n"); printf("\n ↑\n [z]\n ← [q] [d]→ \n [s]\n ↓ [p] Nouveau Mur\n\n"); scanf("%c", &Mur.move); }while(Mur.move!='a'&&Mur.move!='e'&&Mur.move!='z'&&Mur.move!='q'&&Mur.move!='s'&&Mur.move!='d'&&Mur.move!='p'); if(Mur.move=='a'||Mur.move=='e'){ WallSize(&Mur); } if(Mur.move!='p'){ WallMove(carte, &curseur, Mur); } }while(Mur.move!='p'); } }while(Mur.dir!='p'); // Placement des robots if(carte->nbJoueur>1){ n=8; }else{ n=5; } for(i=0;i<n;i++){ curseur.x=1; curseur.y=1; tempCur.x=99; tempCur.y=99; move='x'; do{ carte->Grille[tempCur.y][tempCur.x]=' '; if(i==0){ bender->y=curseur.x; bender->x=curseur.y; } if(i==1){ wallE->y=curseur.x; wallE->x=curseur.y; } if(i==2){ r2d2->y=curseur.x; r2d2->x=curseur.y; } if(i==3){ marvin->y=curseur.x; marvin->x=curseur.y; } if(carte->nbJoueur==1){ if(i==4){ carte->Arrive.y=curseur.x; carte->Arrive.x=curseur.y; } }else{ if(i>3){ carte->Cible[i-4].y=curseur.x; carte->Cible[i-4].x=curseur.y; } } do{ AffichageGrille(carte, *bender, *wallE, *r2d2, *marvin); printf("\nDeplacer le robot :\n"); if(i==3){ printf("\n ↑\n [z]\n ← [q] [d]→ \n [s]\n ↓ [p] Placer Arrivee\n\n"); }else{ if(i==4){ printf("\n ↑\n [z]\n ← [q] [d]→ \n [s]\n ↓ [p] Terminer et sauvegarder\n\n"); }else{ printf("\n ↑\n [z]\n ← [q] [d]→ \n [s]\n ↓ [p] Robot Suivant\n\n"); } } scanf("%c", &move); }while(move!='a'&&move!='e'&&move!='z'&&move!='q'&&move!='s'&&move!='d'&&move!='p'); tempCur.x=curseur.x; tempCur.y=curseur.y; CibleMove(carte, move, &curseur); }while(move!='p'); } }