fmt and piece colors
This commit is contained in:
parent
ba47996c31
commit
77b918ede6
3 changed files with 85 additions and 48 deletions
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue