Jeu d'échec
 
Loading...
Searching...
No Matches
tour.cpp
Go to the documentation of this file.
1#include "pieces/tour.hpp"
2#include "echiquier.hpp"
3
4bool Tour::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 if (row_org == row_dest) {
13 // Déplacement horizontal
14 int direction = (col_dest - col_org) > 0 ? 1 : -1;
15 for (int col = col_org + direction; col != col_dest; col += direction) {
16 Piece* piece = echiquier->get_piece(Square(row_dest, col));
17 if (piece != nullptr)
18 return false;
19 }
20 return true;
21 } else if (col_org == col_dest) {
22 // Déplacement vertical
23 int direction = (row_dest - row_org) > 0 ? 1 : -1;
24 for (int row = row_org + direction; row != row_dest; row += direction) {
25 Piece* piece = echiquier->get_piece(Square(row, col_dest));
26 if (piece != nullptr)
27 return false;
28 }
29 return true;
30 } else {
31 // La tour ne peut pas se déplacer en diagonale
32 return false;
33 }
34 }
35}
36
37bool Tour::est_menace(Square org, Square dest) const {
38 return est_mouvement_legal(org, dest);
39}
Piece * get_piece(Square pos) const
Récupère une pièce se trouvant à la position donnée.
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
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 tour.cpp:4
bool est_menace(Square org, Square dest) const override
Vérifie si la pièce est une menace pour l'adversaire.
Definition tour.cpp:37