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.
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.