Beispiel #1
0
//----------------------------------------------------------------------
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;
}
Beispiel #2
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');
	}
}