Puissance 4

Description

Le célèbre jeu Puissance 4
Ceci est ma première source C++ donc j'aimerai bien avoir quelques critiques et corrections. Ceci est aussi un de mes premiers jeux dans la programmation.

Il y a un bug, mais je n'ai toujours pas trouvé qu'est-ce qui ce passe ni pourquoi, en général, c'est quand on arrive tout en haut, il dit qu'un es joueurs a gagné, ce qui n'est pas le cas.

Source / Exemple :


//Test si gagnant
private: void CheckGrid(int X, int Y)
	{
		Libres -= 1;
		//Match nul
		if(Libres == 0){
			MessageBox::Show("Match nul !!","Gagné",MessageBoxButtons::OK);
			Restart();
			return;
		}

		// Haut et bas
		int YPlus = 1; //Le pion qu'on vient de placer
		for(int i=Y+1;i<7;i++){
			if(Pions[X][i] == Pions[X][Y])
				YPlus += 1;
			else
				i = 7; //quitte la boucle
		}
		for(int i=Y-1;i>-1;i--){
			if(Pions[X][i] == Pions[X][Y])
				YPlus += 1;
			else
				i = -1; //quitte la boucle
		}
		if(YPlus >= 4){
			if(Pions[X][Y] == 1)
				MessageBox::Show("Jaune a gagné !!","Gagné",MessageBoxButtons::OK);
			else
				MessageBox::Show("Rouge a gagné !!","Gagné",MessageBoxButtons::OK);
			Restart();
			return;
		}

		//Gauche et droite
		int XPlus = 1; //Le pion qu'on vient de placer
		for(int i=X+1;i<6;i++){
			if(Pions[i][Y] == Pions[X][Y])
				XPlus += 1;
			else
				i = 6; //quitte la boucle
		}
		for(int i=X-1;i>-1;i--){
			if(Pions[i][Y] == Pions[X][Y])
				XPlus += 1;
			else
				i = -1; //quitte la boucle
		}
		if(XPlus >= 4){
			if(Pions[X][Y] == 1)
				MessageBox::Show("Jaune a gagné !!","Gagné",MessageBoxButtons::OK);
			else
				MessageBox::Show("Rouge a gagné !!","Gagné",MessageBoxButtons::OK);
			Restart();
			return;
		}

		//Diagonale 1
		int XY1Plus = 1; //Le pion qu'on vient de placer
		for(int i=X+1, i2=Y+1;i<7 && i2<6;i++, i2++){
			if(Pions[i][i2] == Pions[X][Y])
				XY1Plus += 1;
			else
				i = 6; //quitte la boucle
		}
		for(int i=X-1, i2=Y-1;i>-1 && i2>-1;i--, i2--){
			if(Pions[i][i2] == Pions[X][Y])
				XY1Plus += 1;
			else
				i = -1; //quitte la boucle
		}
		if(XY1Plus >= 4){
			if(Pions[X][Y] == 1)
				MessageBox::Show("Jaune a gagné !!","Gagné",MessageBoxButtons::OK);
			else
				MessageBox::Show("Rouge a gagné !!","Gagné",MessageBoxButtons::OK);
			Restart();
			return;
		}

		//Diagonale 2
		int XY2Plus = 1; //Le pion qu'on vient de placer
		for(int i=X-1, i2=Y+1;i<7 && i2>-1;i++, i2--){
			if(Pions[i][i2] == Pions[X][Y])
				XY1Plus += 1;
			else
				i = 6; //quitte la boucle
		}
		for(int i=X-1, i2=Y+1;i>-1 && i2<7;i--, i2++){
			if(Pions[i][i2] == Pions[X][Y])
				XY2Plus += 1;
			else
				i = -1; //quitte la boucle
		}
		if(XY2Plus >= 4){
			if(Pions[X][Y] == 1)
				MessageBox::Show("Jaune a gagné !!","Gagné",MessageBoxButtons::OK);
			else
				MessageBox::Show("Rouge a gagné !!","Gagné",MessageBoxButtons::OK);
			Restart();
			return;
		}
	}

Conclusion :


Peut-être que dans une version future, je rajouterai la possibilité réseau.

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.