Jeu d'échec
 
Loading...
Searching...
No Matches
fou.cpp
Go to the documentation of this file.
1#include "pieces/fou.hpp"
2#include "echiquier.hpp"
3
4bool Fou::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
12 if (abs(row_org - row_dest) == abs(col_org - col_dest))
13 {
14 // Vérification si aucune pièce n'est présente entre la case d'origine et de destination
15 int direction_row = (row_dest - row_org) > 0 ? 1 : -1;
16 int direction_col = (col_dest - col_org) > 0 ? 1 : -1;
17 for (int row = row_org + direction_row, col = col_org + direction_col;
18 row != row_dest && col != col_dest;
19 row += direction_row, col += direction_col)
20 {
21 Piece* piece = echiquier->get_piece(Square(row, col));
22 if (piece != nullptr)
23 return false;
24 }
25 return true;
26 } else {
27 return false;
28 }
29}
30
31bool Fou::est_menace(Square org, Square dest) const {
32 return est_mouvement_legal(org, dest);
33}
Piece * get_piece(Square pos) const
Récupère une pièce se trouvant à la position donnée.
bool est_menace(Square org, Square dest) const override
Vérifie si la pièce est une menace pour l'adversaire.
Definition fou.cpp:31
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 fou.cpp:4
Classe décrivant une pièce.
Definition piece.hpp:12
Echiquier * echiquier
Echiquier possédant la pièce.
Definition piece.hpp:38
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
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