fmt and piece colors

This commit is contained in:
Mylloon 2024-01-11 23:01:41 +01:00
parent ba47996c31
commit 77b918ede6
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
3 changed files with 85 additions and 48 deletions

View file

@ -16,7 +16,7 @@ class Dames : private Jeu {
// Etape du jeu, pour savoir où on en est // Etape du jeu, pour savoir où on en est
enum Etape { enum Etape {
EnJeu, EnJeu = 0,
Fini, Fini,
}; };

View file

@ -11,6 +11,7 @@ Dames::Dames(Joueur &j1, Joueur &j2)
} else { } else {
joueurCourant = &j2; joueurCourant = &j2;
} }
etape = EnJeu;
std::cout << "Joueur " << joueurCourant->getNum() std::cout << "Joueur " << joueurCourant->getNum()
<< " jouera avec les pièces blanches et commencera la partie." << " jouera avec les pièces blanches et commencera la partie."
@ -66,19 +67,23 @@ void Dames::event(const int x, const int y) {
// Si une prise est possible, le joueur est obligé d'en faire une // Si une prise est possible, le joueur est obligé d'en faire une
if (prisePossible(*joueurCourant)) { if (prisePossible(*joueurCourant)) {
Ecran::printMessage("Vous devez forcément faire une prise."); Ecran::printMessage("Vous devez forcément faire une prise.");
// Quand il ne peux pas faire de prise, il déplace une de ses pieces // Quand il ne peux pas faire de prise, il déplace une de ses pieces
}else{ } else {
// Vérifier que le déplacement est correct // Vérifier que le déplacement est correct
if (plateau.deplacementValide(posCurseur.first, posCurseur.second)) { if (plateau.deplacementValide(posCurseur.first, posCurseur.second)) {
// Test si le déplacement est possible pour un pions : en diagonal en direction de l'autre joueur // Test si le déplacement est possible pour un pions : en diagonal en
if((joueurCourant==&joueur1 && posCurseur.first==p->getPos().first+1) || // direction de l'autre joueur
(joueurCourant==&joueur2 && posCurseur.first==p->getPos().first-1) && if ((joueurCourant == &joueur1 &&
(posCurseur.second == p->getPos().second+1 || posCurseur.second == p->getPos().second-1)){ posCurseur.first == p->getPos().first + 1) ||
(joueurCourant == &joueur2 &&
posCurseur.first == p->getPos().first - 1) &&
(posCurseur.second == p->getPos().second + 1 ||
posCurseur.second == p->getPos().second - 1)) {
plateau.moveSelection(posCurseur.first, posCurseur.second); plateau.moveSelection(posCurseur.first, posCurseur.second);
// Donne la main au joueur suivant // Donne la main au joueur suivant
changerJoueurCourant(); changerJoueurCourant();
Ecran::printMessage(msgTonTour()); Ecran::printMessage(msgTonTour());
} }
} }
} }
break; break;
@ -123,50 +128,74 @@ bool Dames::prisePossible(Joueur &joueur) const {
if (!p) { if (!p) {
throw std::runtime_error("Cette pièce est.. étrange."); throw std::runtime_error("Cette pièce est.. étrange.");
} }
// On regarde si une prise est possible pour chaque coté de la piece // On regarde si une prise est possible pour chaque coté de la piece
if(pos.first>1){ if (pos.first > 1) {
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first - 1, pos.second)); pieceAPrendre = dynamic_cast<const PieceDames *>(
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory()) plateau.getPiece(pos.first - 1, pos.second));
if (pieceAPrendre != nullptr &&
pieceAPrendre->getCategory() != p->getCategory()) {
return true; return true;
}
} }
if(pos.first>1 && pos.second>1){ if (pos.first > 1 && pos.second > 1) {
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first - 1, pos.second - 1)); pieceAPrendre = dynamic_cast<const PieceDames *>(
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory()) plateau.getPiece(pos.first - 1, pos.second - 1));
if (pieceAPrendre != nullptr &&
pieceAPrendre->getCategory() != p->getCategory()) {
return true; return true;
}
} }
if(pos.first>1 && pos.second<8){ if (pos.first > 1 && pos.second < 8) {
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first - 1, pos.second + 1)); pieceAPrendre = dynamic_cast<const PieceDames *>(
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory()) plateau.getPiece(pos.first - 1, pos.second + 1));
return true; if (pieceAPrendre != nullptr &&
} pieceAPrendre->getCategory() != p->getCategory()) {
if(pos.second>1){
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first, pos.second -1));
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
return true; return true;
}
} }
if(pos.second<8){ if (pos.second > 1) {
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first, pos.second + 1)); pieceAPrendre = dynamic_cast<const PieceDames *>(
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory()) plateau.getPiece(pos.first, pos.second - 1));
return true; if (pieceAPrendre != nullptr &&
} pieceAPrendre->getCategory() != p->getCategory()) {
if(pos.first<8 && pos.second>1){
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first + 1, pos.second - 1));
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
return true; return true;
}
} }
if(pos.first<8 && pos.second<8){ if (pos.second < 8) {
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first + 1, pos.second + 1)); pieceAPrendre = dynamic_cast<const PieceDames *>(
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory()) plateau.getPiece(pos.first, pos.second + 1));
return true; if (pieceAPrendre != nullptr &&
pieceAPrendre->getCategory() != p->getCategory()) {
return true;
}
}
if (pos.first < 8 && pos.second > 1) {
pieceAPrendre = dynamic_cast<const PieceDames *>(
plateau.getPiece(pos.first + 1, pos.second - 1));
if (pieceAPrendre != nullptr &&
pieceAPrendre->getCategory() != p->getCategory()) {
return true;
}
}
if (pos.first < 8 && pos.second < 8) {
pieceAPrendre = dynamic_cast<const PieceDames *>(
plateau.getPiece(pos.first + 1, pos.second + 1));
if (pieceAPrendre != nullptr &&
pieceAPrendre->getCategory() != p->getCategory()) {
return true;
}
}
if (pos.first < 8) {
pieceAPrendre = dynamic_cast<const PieceDames *>(
plateau.getPiece(pos.first + 1, pos.second));
if (pieceAPrendre != nullptr &&
pieceAPrendre->getCategory() != p->getCategory()) {
return true;
}
}
// Cas où la piece est une dame...
if (!p->getDame()) {
} }
if(pos.first<8){
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first + 1, pos.second));
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
return true;
}
// Cas où la piece est une dame...
if (!p->getDame()) {
}
} }
return false; return false;
} }

View file

@ -32,6 +32,14 @@ const std::string PieceDames::to_string(const enum Categorie cat) const {
} }
const sf::Color PieceDames::getScreenColor() const { const sf::Color PieceDames::getScreenColor() const {
// TODO switch (_category) {
return sf::Color::White; case Blanche:
return sf::Color::White;
case Noire:
return sf::Color::Black;
default:
// Ne devrait pas arriver
return sf::Color::White;
}
} }