All pastes #885314 Raw Edit

Something

public text v1 · immutable
#885314 ·published 2008-01-30 21:19 UTC
rendered paste body
#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>

#include <windows.h>



#define PIONSJAUNE 34

#define PIONSROUGE 20

#define PIONSNOIR 10

#define POINTPLATEAUTOT 104



//   /!\  Il faut que PIONSJAUNE < PIONSROUGE < PIONSNOIR  et PIONSJAUNE + PIONSROUGE + PIONSNOIR = 64



#define POINTPIONSJAUNE 1

#define POINTPIONSROUGE 2

#define POINTPIONSNOIR 3

#define POINTPLATOT 104

#define clearconsole()  system("cls") //sous linux : printf("\033[H\033[2J")





void Color(int couleurDuTexte,int couleurDeFond);

void affichage (char tableau[8][8], int *NbTour, int *PionsJauneJoueur1, int *PionsRougeJoueur1, int *PionsNoirJoueur1, int *PionsJauneJoueur2, int *PionsRougeJoueur2, int *PionsNoirJoueur2);

int nombreAlea (int Min, int Max);

void initialisation (char tableau[8][8]);

void trouverPosition (char tableau[8][8], int *PositionX, int *PositionY);

void clean(char *chaine);

void jouer();



int main (int argc, char * const argv[]) {

	int play=0;

	printf("Voulez-vous joueur à L'attrape-sous ? (oui = 1 /non = 0)");

	scanf("%d",&play);

	if(play==1)

		jouer();

	return 0;

}



void jouer()

{

	// variables



	char plateau[8][8];



	int PositionXJoueur1 =0;

	int PositionYJoueur1 =0;



	int PositionXJoueur2 =0;

	int PositionYJoueur2 =0;



	int NbTour = 0;



	int PionsJauneJoueur1 =0;

	int PionsRougeJoueur1 =0;

	int PionsNoirJoueur1 =0;



	int PionsJauneJoueur2 =0;

	int PionsRougeJoueur2 =0;

	int PionsNoirJoueur2 =0;



	int noplay=0;

	int savoirJouer=0, PosX =0, PosY =0, deltaX =0, deltaY =0;

	char ch,piontprit='U';



	//code



	srand((unsigned)time(NULL));





	initialisation(plateau);



	// début de partie, le J1 retire un pion jaune

	do{

		affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

		printf("Joueur1, veuillez choisir le pion jaune a retirer (B2, A1, E3...) : ");

		trouverPosition(plateau,&PositionXJoueur1,&PositionYJoueur1);

	}while(plateau[PositionYJoueur1][PositionXJoueur1] != 'J');

	PionsJauneJoueur1++;

	plateau[PositionYJoueur1][PositionXJoueur1] = ' ';





	// début de partie, le J2 retire un pion jaune

	do{

		affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

		printf("Joueur2, veuillez choisir le pion jaune a retirer (B2, A1, E3...) : ");

		trouverPosition(plateau,&PositionXJoueur2,&PositionYJoueur2);

	}while(plateau[PositionYJoueur2][PositionXJoueur2] != 'J');

	PionsJauneJoueur2++;

	plateau[PositionYJoueur2][PositionXJoueur2] = ' ';





	// on affiche le plateau

	affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);



	// BOUCLE DE JEU 

	do

	{

		NbTour++;

		noplay=0;

		// J2 JOUE

		// J1 choisis son pion jaune de départ

		do{

			affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

			printf("Joueur1, veuillez choisir le pion jaune à utiliser (B2, A1, E3...) : ");

			trouverPosition(plateau,&PositionXJoueur1,&PositionYJoueur1);

		}while(plateau[PositionYJoueur1][PositionXJoueur1] != 'J');

		plateau[PositionYJoueur1][PositionXJoueur1] = '1';



		// J1 joue



		while(1){

			savoirJouer=0; PosX =0; PosY =0; deltaX =0; deltaY =0;

			piontprit='U';

			affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

			printf("Joueur1, pouvez-vous jouer ?(0 = non /1 = oui) : ");

			scanf("%d",&savoirJouer);

			if(savoirJouer!=1)

			{

				break;

			}

			do{

				affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

				printf("Joueur1, veuillez choisir la case libre derriere le pion a sauter sous la forme\nB2, E8, C3, .. Tapez votre position actuelle si vous ne pouvez pas jouer: ");

				trouverPosition(plateau,&PosX,&PosY);

				if((PosX == PositionXJoueur1)&&(PosY == PositionYJoueur1))

					break;

				ch= plateau[PosY][PosX];

				if(ch == ' '){

					deltaX = PosX-PositionXJoueur1;

					deltaY = PosY-PositionYJoueur1;

					if(deltaY== -2 && deltaX == -2){

						piontprit = plateau[PositionYJoueur1-1][PositionXJoueur1-1];

						plateau[PositionYJoueur1-1][PositionXJoueur1-1] = ' ';

					}

					else if(deltaY== 2 && deltaX == 2){

						piontprit = plateau[PositionYJoueur1+1][PositionXJoueur1+1];

						plateau[PositionYJoueur1+1][PositionXJoueur1+1] = ' ';

					}

					else if(deltaY== -2 && deltaX == 2){

						piontprit = plateau[PositionYJoueur1-1][PositionXJoueur1+1];

						plateau[PositionYJoueur1-1][PositionXJoueur1+1] = ' ';

					}

					else if(deltaY== 2 && deltaX == -2){

						piontprit = plateau[PositionYJoueur1+1][PositionXJoueur1-1];

						plateau[PositionYJoueur1+1][PositionXJoueur1-1] = ' ';

					}

					else if(deltaX== -2 && deltaY ==0){

						piontprit = plateau[PositionYJoueur1][PositionXJoueur1-1];

						plateau[PositionYJoueur1][PositionXJoueur1-1] = ' ';

					}

					else if(deltaX== 2  && deltaY ==0){

						piontprit = plateau[PositionYJoueur1][PositionXJoueur1+1];

						plateau[PositionYJoueur1][PositionXJoueur1+1] = ' ';

					}

					else if(deltaY== -2 && deltaX ==0){

						piontprit = plateau[PositionYJoueur1-1][PositionXJoueur1];

						plateau[PositionYJoueur1-1][PositionXJoueur1] = ' ';

					}

					else if(deltaY== 2 && deltaX ==0){

						piontprit = plateau[PositionYJoueur1+1][PositionXJoueur1];

						plateau[PositionYJoueur1+1][PositionXJoueur1] = ' ';

					}

				}



			}while((piontprit!='J') && (piontprit!='R') && (piontprit!='N'));

			if(piontprit=='J')

				PionsJauneJoueur1++;

			if(piontprit=='R')

				PionsRougeJoueur1++;

			if(piontprit=='N')

				PionsNoirJoueur1++;

			plateau[PosY][PosX] = '1';

			plateau[PositionYJoueur1][PositionXJoueur1] = ' ';

			PositionYJoueur1 = PosY;

			PositionXJoueur1 = PosX;

		}



		plateau[PositionYJoueur1][PositionXJoueur1] = 'J';



		//J2 JOUE

		// J2 choisis son pion jaune de départ

		do{

			affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

			printf("Joueur2, veuillez choisir le pion jaune à utiliser (B2, A1, E3...) : ");

			trouverPosition(plateau,&PositionXJoueur2,&PositionYJoueur2);

		}while(plateau[PositionYJoueur2][PositionXJoueur2] != 'J');

		plateau[PositionYJoueur2][PositionXJoueur2] = '2';



		// J2 joue



		while(1){

			affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

			savoirJouer=0; PosX =0; PosY =0; deltaX =0; deltaY =0;

			piontprit='U';

			printf("Joueur2, pouvez-vous jouer ?(0 = non /1 = oui) : ");

			scanf("%d",&savoirJouer);

			if(savoirJouer!=1)

			{

				break;

			}

			do{

				affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

				printf("Joueur2, veuillez choisir la case libre derriere le pion a sauter sous la forme\nB2, E8, C3, .. Tapez votre position actuelle si vous ne pouvez pas jouer: ");

				trouverPosition(plateau,&PosX,&PosY);

				if((PosX == PositionXJoueur2)&&(PosY == PositionYJoueur2))

					break;

				ch= plateau[PosY][PosX];

				if(ch == ' '){

					deltaX = PosX-PositionXJoueur2;

					deltaY = PosY-PositionYJoueur2;

					if(deltaY== -2 && deltaX == -2){

						piontprit = plateau[PositionYJoueur2-1][PositionXJoueur2-1];

						plateau[PositionYJoueur2-1][PositionXJoueur2-1] = ' ';

					}

					else if(deltaY== 2 && deltaX == 2){

						piontprit = plateau[PositionYJoueur2+1][PositionXJoueur2+1];

						plateau[PositionYJoueur2+1][PositionXJoueur2+1] = ' ';

					}

					else if(deltaY== -2 && deltaX == 2){

						piontprit = plateau[PositionYJoueur2-1][PositionXJoueur2+1];

						plateau[PositionYJoueur2-1][PositionXJoueur2+1] = ' ';

					}

					else if(deltaY== 2 && deltaX == -2){

						piontprit = plateau[PositionYJoueur2+1][PositionXJoueur2-1];

						plateau[PositionYJoueur2+1][PositionXJoueur2-1] = ' ';

					}

					else if(deltaX== -2 && deltaY ==0){

						piontprit = plateau[PositionYJoueur2][PositionXJoueur2-1];

						plateau[PositionYJoueur2][PositionXJoueur2-1] = ' ';

					}

					else if(deltaX== 2 && deltaY ==0){

						piontprit = plateau[PositionYJoueur2][PositionXJoueur2+1];

						plateau[PositionYJoueur2][PositionXJoueur2+1] = ' ';

					}

					else if(deltaY== -2 && deltaX ==0){

						piontprit = plateau[PositionYJoueur2-1][PositionXJoueur2];

						plateau[PositionYJoueur2-1][PositionXJoueur2] = ' ';

					}

					else if(deltaY== 2 && deltaX ==0){

						piontprit = plateau[PositionYJoueur2+1][PositionXJoueur2];

						plateau[PositionYJoueur2+1][PositionXJoueur2] = ' ';

					}

				}



			}while((piontprit!='J') && (piontprit!='R') && (piontprit!='N'));

			if(piontprit=='J')

				PionsJauneJoueur2++;

			if(piontprit=='R')

				PionsRougeJoueur2++;

			if(piontprit=='N')

				PionsNoirJoueur2++;

			plateau[PosY][PosX] = '2';

			plateau[PositionYJoueur2][PositionXJoueur2] = ' ';

			PositionYJoueur2 = PosY;

			PositionXJoueur2 = PosX;

		}



		plateau[PositionYJoueur2][PositionXJoueur2] = 'J';





		affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

		printf("Stopper la partie et déclaré un vainqueur ? (1 = oui / 0 = non) :");

		scanf("%d",&noplay);

		if(noplay==1)

		{

			clearconsole();

			affichage(plateau,&NbTour,&PionsJauneJoueur1, &PionsRougeJoueur1, &PionsNoirJoueur1, &PionsJauneJoueur2, &PionsRougeJoueur2, &PionsNoirJoueur2);

			if(PionsJauneJoueur1+PionsRougeJoueur1*2+PionsNoirJoueur1*3 > PionsJauneJoueur2+PionsRougeJoueur2*2+PionsNoirJoueur2*3)

			{

				printf("Joueur 1 remporte la partie !");

				break;

			}

			else if(PionsJauneJoueur1+PionsRougeJoueur1*2+PionsNoirJoueur1*3 < PionsJauneJoueur2+PionsRougeJoueur2*2+PionsNoirJoueur2*3)

			{

				printf("Joueur 2 remporte la partie !");

				break;

			}

			else

			{

				printf("Match nul !");

				break;

			}

		}	

	}while(1);

}



void trouverPosition (char tableau[8][8], int *PositionX, int *PositionY)

{

	char coup[100];

	do

	{

		fgets(coup, sizeof(coup), stdin);

		clean(coup);

		*PositionX = coup[0] - 'A';

		*PositionY = coup[1] - '1';

		//printf("\n\n%d\n%d\n\n",*PositionX,*PositionY);





	}while((*PositionY < 0 || *PositionY > 8)

			||

			(*PositionX < 0 || *PositionX > 8)

	      );



}



void clean(char *chaine)

{

	char *i = strchr(chaine, '\n');



	if(*i == 1)

	{

		*i = 0;

	}

}



void initialisation (char tableau[8][8])

{



	int i,j;

	int pj = PIONSJAUNE;

	int pr = PIONSROUGE;

	int pn = PIONSNOIR;

	char c;



	for(i=0;i!=8;i++){

		for(j=0;j!=8;j++){

			while(1)

			{

				int rand = nombreAlea(0,64);



				if(rand <= PIONSJAUNE && pj >=1){

					c = 'J';

					pj--;

					break;

				}

				if(rand > PIONSJAUNE && rand <= PIONSROUGE+PIONSJAUNE && pr >=1){

					c= 'R';

					pr--;

					break;

				}

				if(rand > PIONSROUGE+PIONSJAUNE && pn >=1){

					c= 'N';

					pn--;

					break;

				}

			}

			tableau[i][j] = c;

		}

	}

}







void affichage (char tableau[8][8], int *NbTour, int *Pion1J, int *Pion1R, int *Pion1N, int *Pion2J, int *Pion2R, int *Pion2N)

{ 

	// ‡ mettre au dÈbut de la fonction afficher

	int i,j,k,numero = 0;



	int PionJPlat = PIONSJAUNE - *Pion2J - *Pion1J;

	int PionRPlat = PIONSROUGE - *Pion2R - *Pion1R;

	int PionNPlat = PIONSNOIR - *Pion2N - *Pion1N;



	int Point1Tot = *Pion1N * POINTPIONSNOIR + *Pion1R * POINTPIONSROUGE + *Pion1J * POINTPIONSJAUNE;

	int Point2Tot = *Pion2N * POINTPIONSNOIR + *Pion2R * POINTPIONSROUGE + *Pion2J * POINTPIONSJAUNE;

	int PointPlatTot = POINTPLATOT - Point1Tot - Point2Tot;



	clearconsole();



	// ‡ mettre au dÈbut de la fonction afficher





	for(i=1; i<18;i++){



		if (i==1) { printf("tour N%.2ld                  | A | B | C | D | E | F | G | H | \n",*NbTour); }

		if (i==2) { printf("                         --+---+---+---+---+---+---+---+---+ \n"); }

		if (i==3) { printf("    | J1 | J2 | Plateau  1|"); }

		if (i==4) { printf("  --+----+----+-----    --+---+---+---+---+---+---+---+---+ \n"); }

		if (i==5) { printf(" Ja | %.2ld | %.2ld | %.2ld       2|",*Pion1J, *Pion2J, PionJPlat); }

		if (i==6) { printf("  --+----+----+-----    --+---+---+---+---+---+---+---+---+ \n"); }

		if (i==7) { printf(" Ro | %.2ld | %.2ld | %.2ld       3|", *Pion1R, *Pion2R, PionRPlat); }

		if (i==8) { printf("  --+----+----+-----    --+---+---+---+---+---+---+---+---+ \n"); }

		if (i==9) { printf(" No | %.2ld | %.2ld | %.2ld       4|", *Pion1N, *Pion2N, PionNPlat); }

		if (i==10) { printf( "  --+----+----+-----    --+---+---+---+---+---+---+---+---+ \n",*NbTour); }

		if (i==11) { printf(" pt | %.2ld | %.2ld | %.3ld      5|",Point1Tot, Point2Tot , PointPlatTot); }

		if (i==12) { printf("                        --+---+---+---+---+---+---+---+---+ \n"); }

		if (i==13) { printf(" Ja = Jaune = 1 point    6|"); }

		if (i==14) { printf(" Ro = Rouge = 2 points  --+---+---+---+---+---+---+---+---+ \n"); }

		if (i==15) { printf(" No =  Noir = 3 points   7|"); }

		if (i==16) { printf(" Pt = Points            --+---+---+---+---+---+---+---+---+ \n"); }

		if (i==17) { printf(" J  = Joueur             8|"); }



		if( (i >= 3) && (i%2 ==1))

		{

			for(j=0; j<8;j++){



				numero = ((i-1)/2)-1;



				// fond bleu

				if (k==0)

				{



					if(tableau[numero][j] == 'J'){

						//Color(14,1);

						printf(" %c",tableau[numero][j]);

						printf(" |");

					}



					if(tableau[numero][j] == 'R'){

						//Color(12,1);

						printf(" %c",tableau[numero][j]);

						printf(" |");

					}



					if(tableau[numero][j] == 'N'){

						//Color(0,1);

						printf(" %c |",tableau[numero][j]);

					}



					if(tableau[numero][j] == '1'){

						//Color(5,1);

						printf(" %c |",tableau[numero][j]);

					}



					if(tableau[numero][j] == '2'){

						Color(5,1);

						printf(" %c |",tableau[numero][j]);

					}



					k++;

					continue;

				}



				//fond bleu clair



				if(k==1)

				{



					if(tableau[numero][j] == 'J'){

						Color(14,3);

						printf(" %c |",tableau[numero][j]);

					}

					if(tableau[numero][j] == 'R'){

						Color(12,3);

						printf(" %c |",tableau[numero][j]);

					}

					if(tableau[numero][j] == 'N'){

						Color(0,3);

						printf(" %c |",tableau[numero][j]);

					}

					if(tableau[numero][j] == '1'){

						Color(5,3);

						printf(" %c |",tableau[numero][j]);

					}

					if(tableau[numero][j] == '2'){

						Color(5,3);

						printf(" %c |",tableau[numero][j]);

					}

				k--;

				continue;

				}

			}

			if (j==7)

				printf("\n");



		}

		if(k==0){

			k++;

			break;

		}

		if(k==1){

			k--;

			break;

		}

	}

}

}



int nombreAlea (int Min, int Max){

	return ((rand() % (int)(((Max) + 1) - (Min))) + (Min));

}





void Color(int couleurDuTexte,int couleurDeFond) // fonction d'affichage de couleurs

{

	HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);

	SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);

}