Quantum-Chess 0.5
Chargement...
Recherche...
Aucune correspondance
Piece.hpp
Aller à la documentation de ce fichier.
1#ifndef PIECE_HPP
2#define PIECE_HPP
3
4#include <Color.hpp>
5#include <Coord.hpp>
6#include <concepts>
7#include <vector>
8#include <forward_list>
9#include <Constexpr.hpp>
10#include <Move.hpp>
11#include "TypePiece.hpp"
12
13template <std::size_t N, std::size_t M>
14class Board;
15
20class Piece
21{
22public:
23 constexpr inline Piece() noexcept;
24
31 constexpr inline Piece(TypePiece piece, Color color) noexcept;
32 constexpr inline Piece(Piece const &) = default;
33 constexpr inline Piece &operator=(Piece const &) = default;
34
38 constexpr inline Piece(Piece &&) = default;
39 constexpr inline Piece &operator=(Piece &&) = default;
40 constexpr inline ~Piece() = default;
41
47 constexpr inline TypePiece get_type() const noexcept;
48
54 constexpr inline Color get_color() const noexcept;
55
68 template <std::size_t N, std::size_t M>
69 CONSTEXPR std::forward_list<Coord>
70 get_list_normal_move(Board<N, M> const &board,
71 Coord const &pos) const noexcept;
72
89 template <std::size_t N, std::size_t M>
90 CONSTEXPR std::forward_list<Coord>
91 get_list_split_move(Board<N, M> const &board,
92 Coord const &pos) const noexcept;
93
99 constexpr inline bool is_white() const noexcept;
100
106 constexpr inline bool is_black() const noexcept;
107
115 constexpr inline bool same_color(Piece const &other) const noexcept;
116
129 template <std::size_t N, std::size_t M>
130 CONSTEXPR bool
132 Coord const &pos) const noexcept;
133
144 template <std::size_t N, std::size_t M>
145 CONSTEXPR std::forward_list<Move>
146 get_list_promote(Board<N, M> const &board,
147 Coord const &pos) const noexcept;
148
149private:
155 enum class Move_Mode
156 {
162
168 };
169
177 constexpr inline static std::size_t
178 abs_substracte(std::size_t x, std::size_t y) noexcept;
179
188 constexpr inline static double
189 norm(Coord const &x, Coord const &y) noexcept;
190
207 template <Move_Mode MOVE, std::size_t N, std::size_t M, std::size_t SIZE>
208 CONSTEXPR std::forward_list<Coord>
209 get_list_move_rec(Board<N, M> const &board, Coord const &pos,
210 std::array<int, SIZE> const &list_move) const noexcept;
211
229 template <Move_Mode MOVE, std::size_t N, std::size_t M>
230 CONSTEXPR std::forward_list<Coord>
232 Coord const &pos) const noexcept;
233
248 template <Move_Mode MOVE, std::size_t N, std::size_t M>
249 CONSTEXPR std::forward_list<Coord>
251 Coord const &pos) const noexcept;
252
267 template <Move_Mode MOVE, std::size_t N, std::size_t M>
268 CONSTEXPR std::forward_list<Coord>
270 Coord const &pos) const noexcept;
271
286 template <Move_Mode MOVE, std::size_t N, std::size_t M>
287 CONSTEXPR std::forward_list<Coord>
289 Coord const &pos) const noexcept;
290
305 template <Move_Mode MOVE, std::size_t N, std::size_t M>
306 CONSTEXPR std::forward_list<Coord>
308 Coord const &pos) const noexcept;
309
322 template <std::size_t N, std::size_t M>
323 CONSTEXPR std::forward_list<Coord>
325 Coord const &pos) const noexcept;
326
341 template <Move_Mode MOVE, std::size_t N, std::size_t M>
342 CONSTEXPR std::forward_list<Coord>
344 Coord const &pos) const noexcept;
345
350
356};
357
358#include "Piece.tpp"
359#include "get_list_move.tpp"
360
365
370
375
380
385
390
395
400
405
410
415
420
421#endif
Color
Représente la couleur d'un joueur.
Definition Color.hpp:8
@ BLACK
Le joueur noir dont la valeur vaut 0.
Definition Color.hpp:12
@ WHITE
Le joueur blanc dont la valeur vaut 1.
Definition Color.hpp:17
#define CONSTEXPR
Utilisé pour utiliser ou non constexpr.
Definition Constexpr.hpp:7
constexpr Piece B_QUEEN
L'objet représentant la renne noire.
Definition Piece.hpp:379
constexpr Piece W_BISHOP
L'objet représentant le fou blanc.
Definition Piece.hpp:384
constexpr Piece B_KNIGHT
L'objet représentant le cavalier noir.
Definition Piece.hpp:409
constexpr Piece B_ROOK
L'objet représentant la tour noire.
Definition Piece.hpp:399
constexpr Piece B_BISHOP
L'objet représentant le fou noir.
Definition Piece.hpp:389
constexpr Piece W_ROOK
L'objet représentant la tour blanche.
Definition Piece.hpp:394
constexpr Piece B_PAWN
L'objet représentant le pion noir.
Definition Piece.hpp:419
constexpr Piece W_KNIGHT
L'objet représentant le cavalier blanc.
Definition Piece.hpp:404
constexpr Piece W_PAWN
L'objet représentant le pion blanc.
Definition Piece.hpp:414
constexpr Piece W_KING
L'objet représentant le roi blanc.
Definition Piece.hpp:364
constexpr Piece W_QUEEN
L'objet représentant la renne blanche.
Definition Piece.hpp:374
constexpr Piece B_KING
L'objet représentant le roi noir.
Definition Piece.hpp:369
TypePiece
Enumère toutes les sortes de pièces.
Definition TypePiece.hpp:8
@ QUEEN
Definition TypePiece.hpp:14
@ KING
Definition TypePiece.hpp:15
@ BISHOP
Definition TypePiece.hpp:12
@ PAWN
Definition TypePiece.hpp:10
@ ROOK
Definition TypePiece.hpp:13
@ KNIGHT
Definition TypePiece.hpp:11
La classe représentant le plateau de jeu.
Definition Board.hpp:33
Class conservant le type et la couleur d'une pièce. Elle permet aussi de recuperer ses mouvement poss...
Definition Piece.hpp:21
CONSTEXPR std::forward_list< Coord > get_list_move_pawn(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste de mouvement du pion.
CONSTEXPR std::forward_list< Coord > get_list_move_rec(Board< N, M > const &board, Coord const &pos, std::array< int, SIZE > const &list_move) const noexcept
Récupère la liste de mouvement d'une pièce pour les déplacements indiqué de manière récursive c'est à...
CONSTEXPR std::forward_list< Move > get_list_promote(Board< N, M > const &board, Coord const &pos) const noexcept
Renvoie la liste de toutes les promotions.
CONSTEXPR std::forward_list< Coord > get_list_move_queen(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste de mouvement de la dame.
static constexpr std::size_t abs_substracte(std::size_t x, std::size_t y) noexcept
renvoie la valeur absolue d'un soustraction sur des types size_t
CONSTEXPR bool check_if_use_move_promote(Board< N, M > const &board, Coord const &pos) const noexcept
Teste si les mouvement de la piece sont si la pièce est un pion un mouvement de promotion.
CONSTEXPR std::forward_list< Coord > get_list_move_king(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste de mouvement du roi.
Color m_color
La couleur de la pièce (WHITE/BLACK)
Definition Piece.hpp:349
constexpr bool same_color(Piece const &other) const noexcept
Teste si l'autre piece est de la meme couleur.
CONSTEXPR std::forward_list< Coord > get_list_move_bishop(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste de mouvement du fou.
CONSTEXPR std::forward_list< Coord > get_list_move(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste de mouvement pour n'importe qu'elle pièce.
constexpr Piece() noexcept
constexpr bool is_white() const noexcept
Teste si la piece est blanche.
static constexpr double norm(Coord const &x, Coord const &y) noexcept
renvoie la distance entre deux coordonnées à l'aide de la norme 2
CONSTEXPR std::forward_list< Coord > get_list_move_rook(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste de mouvement de la tour.
constexpr bool is_black() const noexcept
Teste si la piece est noire.
CONSTEXPR std::forward_list< Coord > get_list_move_knight(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste de mouvement du cavalier.
Move_Mode
Enumération utilisé dans le template des fonctions qui récupère les listes de mouvement pour modifier...
Definition Piece.hpp:156
@ NORMAL
Dans le cas du mouvement classique on autorise la prise de pièce.
Definition Piece.hpp:161
@ SPLIT
Dans le cas du split on interdit la prise de pièce.
Definition Piece.hpp:167
CONSTEXPR std::forward_list< Coord > get_list_normal_move(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste des mouvements classics pour une piece.
constexpr TypePiece get_type() const noexcept
Renvoie le type de la piece.
constexpr Color get_color() const noexcept
Renvoie la couleur d'un piece.
TypePiece m_type
Le type de la piece ( KING / QUEEN / ROOK / BISHOP / KNIGHT / PAWN )
Definition Piece.hpp:355
CONSTEXPR std::forward_list< Coord > get_list_split_move(Board< N, M > const &board, Coord const &pos) const noexcept
Récupère la liste des mouvements split pour une piece.
Definition Complex_printer.hpp:9
La structure qui représente une coordonnée sur le plateau.
Definition Coord.hpp:11
Stoque tout les mouvements possibles.
Definition Move.hpp:38