[c]jeux sympa : allumettes en pyramides

Description

Voici le jeu : il y a une pyramide d'allumettes (1, 2, 3, 5, 8), on peut prendre autant d'allumette que l'on veut sur une ligne, et celui qui prend la dernière a perdu.
Avec ce prog on joue contre l'ordinateur.
Testez le niveau 3 c'est pas facile de gagner !

Source / Exemple :

#include <iostream.h>



int menu();
void afficheinstructions();
void jeux(int level);
void afficheallumettes(int all[]);
int addition (int tabl[]);
int points=0; 
int tout=0;


int main(){

	int faire=0;
	int niveau=3;
	



while (faire!=4){
	
	faire=menu();

	switch (faire){

	case 1:
		jeux(niveau);
	break;

	case 2:
			do	{
		cout<<"entrez un niveau entre 1 et 3 (1=tres facile, 2=moyen, 3=dur) (default = 3) ";
		cin>>niveau;} 	while (niveau<1 || niveau>3);

	break;

	case 3:
		afficheinstructions();
	break;

	}//switch











}// while




return 0;}


int menu(){
int key;
	cout<<"\n1. jouer\n2. niveau\n3.instructions\n4. quitter\n";
cin>>key;
	return key;
}

void afficheinstructions(){

cout<<"\nle jeu forme une \"pyramide\" d allumettes\non peut prendre autant d allumettes que lon veut sur chaque ligne \net celui qui prend la derniere allumette a perdu\n";

}

void jeux(int level){  // code du jeux à proprement parler.

	int allumettes[5]={1,2,3,5,8};
	char start;
	int total=19;
	int personne;
	int ligne;
	int nombre;
	int travail[5];
	int travail1=-1;
	int travail2=-1;
	int avancement2;
	int nbutil;
	int control;
	int temp;

	int nb1=0,nb2=0,nb3=0,nb4=0,nb5=0,nb6=0,nb7=0,nb8=0;
	int avancement;
	
	if (level==3){cout<<"\nniveau difficile\n";}
	if (level==2){cout <<"\nniveau moyen\n";}
	if (level==1){cout<<"\nniveau tres facil\n";}

	cout<<"\ncommencer ? (o/n) :  ";
	cin>>start;



	if (start=='o'){personne=1;} // personne =1 : a l'humain de jouer
	else {personne=0;} // au pc de jouer

	cout<<"\n\n";
	
	do{

	afficheallumettes(allumettes);
	total=addition(allumettes);
	

	if (personne==1){
	
		do{
		cout<<"\nentrez la ligne sur laquelle vous voulez retirer des alllumettes (1-5):  ";
		cin>>ligne; } while (allumettes[ligne-1]==0 || ligne<1 || ligne >5);

		do{
			cout<<"\nentrez combien d allumettes vous voulez retirer :  ";
			cin>>nombre;
		}while (allumettes[ligne-1]-nombre<0 || nombre<=0);


		allumettes[ligne-1]-=nombre;



		personne=0; // on change de joueur
		

	
	
	} // if : partie humaine
	else {
	
	nb1=0,nb2=0,nb3=0,nb4=0,nb5=0,nb6=0,nb7=0,nb8=0;
	nombre=0;
	ligne=0;
				if (level==3) {
	for (avancement=0;avancement<5;avancement++){travail[avancement]=allumettes[avancement];} // on recopie juste le tableau dans un autre de travail.

	for (avancement=0;avancement<5;avancement++){ // on compte le nb de 1
	
		if (allumettes[avancement]==1){nb1++;}

	}
		for (avancement=0;avancement<5;avancement++){ // on compte le nb de 2
	
		if (allumettes[avancement]==2){nb2++;
	//	cout<<"surprise";
		}

	}
			for (avancement=0;avancement<5;avancement++){ // on compte le nb de 3
	
		if (allumettes[avancement]==3){nb3++;}

	}
				for (avancement=0;avancement<5;avancement++){ // on compte le nb de 4
	
		if (allumettes[avancement]==4){nb4++;}

	}
					for (avancement=0;avancement<5;avancement++){ // on compte le nb de 5
	
		if (allumettes[avancement]==5){nb5++;}

	}
						for (avancement=0;avancement<5;avancement++){ // on compte le nb de 6
	
		if (allumettes[avancement]==6){nb6++;}

	}
							for (avancement=0;avancement<5;avancement++){ // on compte le nb de 7
	
		if (allumettes[avancement]==7){nb7++;}

	}
								for (avancement=0;avancement<5;avancement++){ // on compte le nb de 8
	
		if (allumettes[avancement]==8){nb8++;}

	}
//cout<<"nb:"<<nb1<<nb2<<nb3<<nb4<<"end";

								control=0;
								if (nb1==2){
								
									for (avancement=0;avancement<5;avancement++){

										if (travail[avancement]==1 && control<= 2){travail[avancement]=0; control++; }
									}
								
								}
								control=0;
										if (nb2==2){
								
									for (avancement=0;avancement<5;avancement++){
										if (travail[avancement]==2 && control<= 2){travail[avancement]=0; control++;}
									}
								
										} 
										control=0;
								if (nb3==2){
								
									for (avancement=0;avancement<5;avancement++){
										if (travail[avancement]==3 && control<=2 ){travail[avancement]=0;control++;}
									}
								
								}
								control=0;
								if (nb4==2){
								
									for (avancement=0;avancement<5;avancement++){
										if (travail[avancement]==4 && control<=2 ){travail[avancement]=0;control++;}
									}
								
								}
								control=0;
								if (nb5==2){
								
									for (avancement=0;avancement<5;avancement++){
										if (travail[avancement]==5 && control<=2 ){travail[avancement]=0;control++;}
									}
								
								}
//for (control=0;control<5;control++){
//cout<<travail[control]<<"  ";}

// si ya 2 rangées identiques, on les supprime, pour avoir un système équivalent et plus simple dans travail


//on teste les 1,2,3
									nb1=0,nb2=0,nb3=0,nb4=0,nb5=0,nb6=0,nb7=0,nb8=0;
	for (avancement=0;avancement<5;avancement++){ // on compte le nb de 1
	
		if (travail[avancement]==1){nb1++;}

	}
		for (avancement=0;avancement<5;avancement++){ // on compte le nb de 2
	
		if (travail[avancement]==2){nb2++;
	//	cout<<"surprise";
		}

	}
			for (avancement=0;avancement<5;avancement++){ // on compte le nb de 3
	
		if (travail[avancement]==3){nb3++;}

	}
				for (avancement=0;avancement<5;avancement++){ // on compte le nb de 4
	
		if (travail[avancement]==4){nb4++;}

	}
					for (avancement=0;avancement<5;avancement++){ // on compte le nb de 5
	
		if (travail[avancement]==5){nb5++;}

	}
						for (avancement=0;avancement<5;avancement++){ // on compte le nb de 6
	
		if (travail[avancement]==6){nb6++;}

	}
							for (avancement=0;avancement<5;avancement++){ // on compte le nb de 7
	
		if (travail[avancement]==7){nb7++;}

	}
								for (avancement=0;avancement<5;avancement++){ // on compte le nb de 8
	
		if (travail[avancement]==8){nb8++;}

	}
								if (nb1>=1 && nb2>=1 && nb3>=1){
								
									for (avancement=0;avancement<5;avancement++){
									avancement2=0;
									if (travail[avancement]==1 && avancement2<1){avancement2++; travail[avancement]=0;}
									}
									
									for (avancement=0;avancement<5;avancement++){
									avancement2=0;
									if (travail[avancement]==2 && avancement2<1){avancement2++; travail[avancement]=0;}
									}

									for (avancement=0;avancement<5;avancement++){
									avancement2=0;
									if (travail[avancement]==3 && avancement2<1){avancement2++; travail[avancement]=0;}
									}


								}
								 
//for (control=0;control<5;control++){
//cout<<travail[control]<<"  ";}


// maintenant on regarde ce qui reste dans travail..

					// on regarde le nb de lignes utilisées
								nbutil=0;
								
								for (avancement=0;avancement<5;avancement++){
									
									if (travail[avancement]!=0){nbutil++;}
							
								}
								if (nbutil==1){ 
									for (avancement=0;avancement<5;avancement++){
										if (travail[avancement]!=0){ligne=avancement; nombre=travail[avancement];}
									}
								
								}
						
								
								
								
								travail1=0;
								travail2=0;
								temp=0;
								if (nbutil==2){
								
									for (avancement=0;avancement<5;avancement++){
									
										if (travail[avancement]!=0 && travail1==0){
										
											travail1=travail[avancement];
											temp=avancement;
										
										} 
										if (travail[avancement]!=0 && travail2==0 && avancement!=temp && travail1!=0)
										{
										
										travail2=travail[avancement];
										}
										
										
									
									
									}
								
								
								
								}

//cout<<"travail1 et 2="<<travail1<<travail2;

								if (travail1<travail2){
								
								nombre=travail2-travail1;
								
								for (avancement=0;avancement<5;avancement++){
								
									if (travail[avancement]==travail2){ligne=avancement;}
								
								}

								}
							
								if (travail2<travail1){
								
								nombre=travail1-travail2;
								
								for (avancement=0;avancement<5;avancement++){
								
									if (travail[avancement]==travail1){ligne=avancement;}
								
								}

								}  // la on a equilibré.





									nb1=0,nb2=0,nb3=0,nb4=0,nb5=0,nb6=0,nb7=0,nb8=0;
	for (avancement=0;avancement<5;avancement++){ // on compte le nb de 1
	
		if (travail[avancement]==1){nb1++;}

	}
		for (avancement=0;avancement<5;avancement++){ // on compte le nb de 2
	
		if (travail[avancement]==2){nb2++;
	//	cout<<"surprise";
		}

	}
			for (avancement=0;avancement<5;avancement++){ // on compte le nb de 3
	
		if (travail[avancement]==3){nb3++;}

	}
				for (avancement=0;avancement<5;avancement++){ // on compte le nb de 4
	
		if (travail[avancement]==4){nb4++;}

	}
					for (avancement=0;avancement<5;avancement++){ // on compte le nb de 5
	
		if (travail[avancement]==5){nb5++;}

	}
						for (avancement=0;avancement<5;avancement++){ // on compte le nb de 6
	
		if (travail[avancement]==6){nb6++;}

	}
							for (avancement=0;avancement<5;avancement++){ // on compte le nb de 7
	
		if (travail[avancement]==7){nb7++;}

	}
								for (avancement=0;avancement<5;avancement++){ // on compte le nb de 8
	
		if (travail[avancement]==8){nb8++;}

	}
								
								if (nbutil==3){
								
								
if (nb1==1 && nb2==1){
									
										for (avancement=0;avancement<5;avancement++){
										
											if (travail[avancement]>3){ligne=avancement;nombre=travail[avancement]-3;}
										}

									}
if (nb1==1 && nb3==1){
									
										for (avancement=0;avancement<5;avancement++){
										
											if (travail[avancement]>2){ligne=avancement;nombre=travail[avancement]-2;}
										}

									}								

if (nb2==1 && nb3==1){
									
										for (avancement=0;avancement<5;avancement++){
										
											if (travail[avancement]>1){ligne=avancement;nombre=travail[avancement]-1;}
										}

									}

								
								
								}
								
								
} // fin de if (level==3)


if (level==2 || level==3){
								
								//////////////////////////////cas particuliers

	nb1=0,nb2=0,nb3=0,nb4=0,nb5=0,nb6=0,nb7=0,nb8=0;
	for (avancement=0;avancement<5;avancement++){ // on compte le nb de 1
	
		if (allumettes[avancement]==1){nb1++;}

	}
		for (avancement=0;avancement<5;avancement++){ // on compte le nb de 2
	
		if (allumettes[avancement]==2){nb2++;
//		cout<<"surprise";
		}

	}
			for (avancement=0;avancement<5;avancement++){ // on compte le nb de 3
	
		if (allumettes[avancement]==3){nb3++;}

	}
				for (avancement=0;avancement<5;avancement++){ // on compte le nb de 4
	
		if (allumettes[avancement]==4){nb4++;}

	}
					for (avancement=0;avancement<5;avancement++){ // on compte le nb de 5
	
		if (allumettes[avancement]==5){nb5++;}

	}
						for (avancement=0;avancement<5;avancement++){ // on compte le nb de 6
	
		if (allumettes[avancement]==6){nb6++;}

	}
							for (avancement=0;avancement<5;avancement++){ // on compte le nb de 7
	
		if (allumettes[avancement]==7){nb7++;}

	}
								for (avancement=0;avancement<5;avancement++){ // on compte le nb de 8
	
		if (allumettes[avancement]==8){nb8++;}

	}
// on envisage la fin du jeu :
								
								nbutil=0;
								for (avancement=0;avancement<5;avancement++){
									
									if (allumettes[avancement]!=0){nbutil++;}}
//cout<<"nbutil:"<<nbutil;
								if (nbutil==2){
							//	cout<<"nb1";
									if (nb1==1){
									//	cout<<"ave";
										for (avancement=0;avancement<5;avancement++){
											if (allumettes[avancement]!=1 && allumettes[avancement]!=0){
											ligne=avancement;
											nombre=allumettes[avancement];
										//	cout<<"ave"<<ligne<<nombre<<travail[avancement];
											}
										}
									}
								
								
								}// on laisse la dernière allumette (niark)
							
								nbutil=0;
								for (avancement=0;avancement<5;avancement++){
									
									if (allumettes[avancement]!=0){nbutil++;}}

								if (nbutil==3){
									
									if (nb1==2){
									
										for (avancement=0;avancement<5;avancement++){
										
											if (allumettes[avancement]!=1 && allumettes[avancement]!=0){
											
											ligne=avancement;
											nombre=allumettes[avancement]-1;
											}
										
										}
									
									}
								
								
								
								}

								if (nbutil==4){
								
									if (nb1==3){
									
										for (avancement=0;avancement<5;avancement++){
										
											if (allumettes[avancement]!=1 && allumettes[avancement]!=0){
											ligne=avancement;
											nombre=allumettes[avancement];
											}
										
										}
									
									}
								
								
								}




								if (nbutil==5){
								
									if (nb1==4){
									
										for (avancement=0;avancement<5;avancement++){
										
											if (allumettes[avancement]!=1 && allumettes[avancement]!=0){
											ligne=avancement;
											nombre=allumettes[avancement]-1;
											
											}

										}
									
									}
								
								}




								if (nbutil==1){
								
									for (avancement=0;avancement<5;avancement++){
									
										if (allumettes[avancement]!=0){
										ligne=avancement;
										nombre=allumettes[avancement]-1;
										}
									}
								
								}


} // fin level 2 et 3



								avancement2=0;

								if (nombre==0){
									for (avancement=0;avancement<5;avancement++){
									
										if (allumettes[avancement]!=0){
								
										ligne=avancement;
										nombre=1;
										}
									
									
									}
								
								}// si le programme est couillonné par le joueur.. (ou si level 1)



		// jeu en lui meme :

						allumettes[ligne]-=nombre;




  /* for (control=0;control<5;control++){
  cout<<travail[control]<<"  ";} */





	
	
	personne=1; // on change de joueur

	
	
	} // else : partie pc







total=addition(allumettes);






	}while (total>0);// while
	if (personne==1){cout<<"\nvous avez gagne !";
points++;
tout++;

}else {cout<<"\nle pc vous a batuu !";

tout++;
}


cout<<"\nvous avez gagne "<<points<<" fois pour "<<tout<<" parties"<<endl;


}//fonction jeux()



void afficheallumettes(int all[]){
cout<<"\n\n";
	for (int i=0;i<5;i++){
			for (int y=0;y<3;y++){	

		for (int p=0;p<all[i];p++){

				cout<<"I  ";}
		if (y==1){
			if (all[i]!=0){	  // on affiche pas les lignes inutilisées
				cout<<"   : ligne "; cout<<i+1;} // on affiche le nb des lignes
		}	
		if (all[i]!=0){   cout<<"\n"; }
		}
	cout<<"\n";
	
	}
}


int addition(int tabl[]){

	int a=0;

	for (int increment=0;increment<5;increment++){
	a+=tabl[increment];
	}


return a;}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.