Jeu d'échec
 
Loading...
Searching...
No Matches
roi.cpp
Go to the documentation of this file.
1#include "pieces/roi.hpp"
2#include <iostream>
3
4bool Roi::est_mouvement_legal(Square org, Square dest) const {
5 int row_org, col_org, row_dest, col_dest;
6 dest.get_row_col(row_dest, col_dest);
7 org.get_row_col(row_org, col_org);
8
9 // Cas de base
10 if(!Piece::est_mouvement_legal(org, dest)) return false;
11 else{
12 // Déplacement de une case
13 return (abs(row_org - row_dest) == 1 && abs(col_org - col_dest) == 1)
14 || (abs(row_org - row_dest) == 0 && abs(col_org - col_dest) == 1)
15 || (abs(row_org - row_dest) == 1 && abs(col_org - col_dest) == 0);
16 }
17}
18
19bool Roi::est_menace(Square org, Square dest) const {
20 return est_mouvement_legal(org, dest);
21}
22
23std::string Roi::get_name() const {
24 if(isChecked)
25 return "\033[1;31m" + Piece::get_name() + "\033[0m";
26 else
27 return Piece::get_name();
28}
virtual std::string get_name() const
Definition piece.hpp:66
virtual bool est_mouvement_legal(Square origine, Square destination) const
Vérifie si un mouvement de la case origine à la case destination est valide.
Definition piece.cpp:6
std::string get_name() const override
Definition roi.cpp:23
bool est_menace(Square org, Square dest) const override
Vérifie si la pièce est une menace pour l'adversaire.
Definition roi.cpp:19
bool est_mouvement_legal(Square org, Square dest) const override
Vérifie si un mouvement de la case origine à la case destination est valide.
Definition roi.cpp:4
Décrit une case de l'échiquier.
Definition square.hpp:7
void get_row_col(int &row, int &col) const
Récupère la ligne et la colonne décrite par l'objet.
Definition square.hpp:15