Quantum-Chess 0.5
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Board< N, M >final

La classe représentant le plateau de jeu. Plus de détails...

#include <Board.hpp>

Fonctions membres publiques

CONSTEXPR Board ()
 
CONSTEXPR Board (std::initializer_list< std::initializer_list< Piece > > const &board)
 
CONSTEXPR Board (std::ranges::common_range auto const &board)
 Initialise le plateau à partir d'un ensemble de pièce, les pièces ne sont pas divisées initialement.
 
CONSTEXPR Board (Board const &)=default
 
CONSTEXPR Boardoperator= (Board const &)=default
 
CONSTEXPR Board (Board &&)=default
 
CONSTEXPR Boardoperator= (Board &&)=default
 
CONSTEXPR ~Board ()=default
 
CONSTEXPR Piece const & operator() (std::size_t n, std::size_t m) const noexcept
 Retourne un pointeur sur la piece à l'emplacement cible.
 
CONSTEXPR std::forward_list< Coordget_list_normal_move (Coord const &pos) const
 Renvoie la liste dans tous les mouvements classiques légaux d'une pièce.
 
CONSTEXPR std::forward_list< Coordget_list_split_move (Coord const &pos) const
 Renvoie la liste de toutes les cases qu'une pièce peut atteindre lors d'un mouvement split, il faut choisir deux éléments de la liste pour créer un mouvement split.
 
CONSTEXPR bool check_if_use_move_promote (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< Moveget_list_promote (Coord const &pos) const noexcept
 Renvoie la liste de toutes les promotions.
 
template<class UnitaryFunction>
CONSTEXPR void all_move (UnitaryFunction func, std::optional< Color > color_player=std::nullopt) const noexcept
 Applique une fonction à l'entiéreté des mouvements possible.
 
CONSTEXPR bool move_is_legal (Move const &move) const
 Test si un mouvement est réalisable.
 
CONSTEXPR void move (Move const &movement, std::optional< bool > val_mes=std::nullopt)
 Réalise un mouvement d'une pièce quelque soit le type du mouvement (classic, split, merge)
 
CONSTEXPR bool winning_position (Color c) const noexcept
 Test si un plateau est gagnant pour une couleur.
 
CONSTEXPR Color get_current_player () const noexcept
 Recupère la couleur du joueur au tour de jouer.
 
CONSTEXPR void change_player () noexcept
 Change le joueur actuel et passe la main à l'autre joueur.
 
CONSTEXPR double get_proba (Coord const &pos) const noexcept
 Renvoie la probabilité qu'il y ait une pièce à une position.
 
CONSTEXPR void move_promotion (Move const &move, std::optional< bool > val_mes=std::nullopt)
 Fonction qui permet de faire un mouvement de pion quelconque avec une promotion.
 
CONSTEXPR double get_proba_move (Move const &move) const noexcept
 Renvoie la probabilité que le mouvement soit réalisé
 

Fonctions membres publiques statiques

static CONSTEXPR std::size_t numberLines () noexcept
 Retourne le nombre de ligne du plateau.
 
static CONSTEXPR std::size_t numberColumns () noexcept
 Retourne le nombre de colonne.
 

Fonctions membres privées

CONSTEXPR double get_proba_mesure (Coord const &p) const noexcept
 Renvoie la probabilité que la fonction mesure renvoie true, c'est-à-dire la proba que le mouvement soit"réussi".
 
CONSTEXPR double get_proba_mesure_capture_slide (Coord const &s, Coord const &t, std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path) const noexcept
 Renvoie la probabilité que la fonction mesure_capture_slide renvoie true, c'est-à-dire la proba que le mouvement de capture_slide soit"réussi".
 
CONSTEXPR double get_proba_mesure_castle (Coord const &king, Coord const &rook) const noexcept
 Renvoie laprobabilité que la fonction mesure_castle renvoie true, c'est-à-dire la proba que le mouvement de roque soit"réussi".
 
void update_case (std::size_t pos) noexcept
 Vérifie si la case à une possibilité de contenir une pièce, et si elle n'en a pas modifie m_piece_board en nullptr.
 
void update_board () noexcept
 Fonction qui permet de mattre à jour le plateau, car ce mouvement entraine l'apparition de plusieurs instance de board identique, il faut donc les concaténer en ajoutant les probas, si la proba vaut 0, on supprime l'instance.
 
void update_board_classic () noexcept
 
CONSTEXPR void move_classic_jump (Coord const &s, Coord const &t, std::optional< bool > val_mes=std::nullopt)
 Mouvement classique d'une pièce qui "saute" (cavalier, roi)
 
CONSTEXPR void move_split_jump (Coord const &s, Coord const &t1, Coord const &t2)
 Mouvement "split jump".
 
CONSTEXPR void move_merge_jump (Coord const &s, Coord const &t1, Coord const &t2)
 Mouvement de merge.
 
CONSTEXPR void move_classic_slide (Coord const &s, Coord const &t, std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path, std::optional< bool > val_mes=std::nullopt)
 Mouvement classique d'un pièce qui "glisse" (fou, dame, tour)
 
CONSTEXPR void move_split_slide (Coord const &s, Coord const &t1, Coord const &t2, std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path)
 Mouvement "split slide".
 
CONSTEXPR void move_merge_slide (Coord const &s1, Coord const &s2, Coord const &t, std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path)
 Mouvement de merge.
 
CONSTEXPR bool move_pawn_one_step (Coord const &s, Coord const &t, std::optional< bool > val_mes=std::nullopt)
 Le mouvement de piond'une case fonctionne comme un mouvementde jump classique, à la différence qu'un pion ne peut pas capturer une pièce en avançant. On mesure de la même façon qu'un jump classique en considérant toutes les pièces comme des pièces alliées.
 
CONSTEXPR bool move_pawn_two_step (Coord const &s, Coord const &t, std::optional< bool > val_mes=std::nullopt)
 Le mouvement de pion de deux cases fonctionne comme un mouvement de slide classique, à la différence qu'un pion ne peut pas capturer une pièce en avançant, on mesure de la même façon qu'un slide classique en considérant toutes les pièces comme des pièces alliées.
 
CONSTEXPR bool capture_pawn (Coord const &s, Coord const &t, std::optional< bool > val_mes=std::nullopt)
 Mouvement de capture dun pion. A la différence d'un mouvement de "capture jump", on mesure la présence de la cible car le pion a besoin de la cible pour se déplacer.
 
CONSTEXPR bool move_enpassant (Coord const &s, Coord const &t, Coord const &ep, std::optional< bool > val_mes=std::nullopt)
 Permet d'effectuer un mouvement de prise en passant.
 
CONSTEXPR bool mesure (Coord const &p, std::optional< bool > val_mes=std::nullopt)
 Mesure la présence d'une pièce.
 
CONSTEXPR bool mesure_capture_slide (Coord const &s, Coord const &t, std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path, std::optional< bool > val_mes=std::nullopt)
 Fonction qui permet de faire une mesure dans le cas d'un mouvement "capture slide".
 
CONSTEXPR void move_classic (Coord const &s, Coord const &t, std::optional< bool > val_mes)
 Mouvement classique d'une pièce (pion exclu)
 
CONSTEXPR void move_split (Coord const &s, Coord const &t1, Coord const &t2)
 Mouvement split d'une pièce (pion exclu)
 
CONSTEXPR void move_merge (Coord const &s1, Coord const &s2, Coord const &t)
 Mouvement de merge de pièce (pion exclu)
 
CONSTEXPR bool move_pawn (Coord const &s, Coord const &t, std::optional< bool > val_mes=std::nullopt) noexcept
 Gère tout les mouvements d'un pion.
 
template<std::size_t Q>
CONSTEXPR void modify (std::array< std::pair< std::array< bool, Q >, std::complex< double > >, 2 > const &arrayQubit, std::size_t position_board, std::array< std::size_t, Q > const &tab_positions)
 fonction auxiliaire qui permet de modifier un plateau à l'aide d'un array de la forme du type de retour de la fonction qubitToArray, le deuxième éléments du tableau à une probalité non nulle lors d'un mouvement split
 
template<std::size_t Q>
CONSTEXPR void move_1_instance (std::array< bool, Q > const &case_modif, std::size_t position, CMatrix< _2POW(Q)> const &matrix, std::array< std::size_t, Q > const &tab_positions) noexcept
 Fonction qui permet d'effectuer un mouvement sur une instance du plateau.
 
CONSTEXPR void king_side_castle (Coord const &king, Coord const &rook, std::optional< bool > val_mes=std::nullopt)
 Mouvement du petit roque.
 
CONSTEXPR bool mesure_castle (Coord const &king, Coord const &rook, std::optional< bool > val_mes=std::nullopt)
 Fonction qui permet de mesurer la possibilité de faire le roque.
 
CONSTEXPR void queen_side_castle (Coord const &king, Coord const &rook, std::optional< bool > val_mes=std::nullopt)
 Mouvement du grand roque.
 

Fonctions membres privées statiques

static CONSTEXPR std::size_t offset (std::size_t ligne, std::size_t colonne) noexcept
 Renvoie une position 1D d'une coordonnée 2D.
 
static CONSTEXPR void range_to_2_array (std::ranges::common_range auto const &board, std::array< bool, N *M > &first_instance, std::array< Piece, N *M > &piece_board) noexcept
 Initialise un plateau à l'aide d'un container 2D.
 
static CONSTEXPR void init_mailbox (std::array< int, N *M > &S_mailbox, std::array< int,(N+4) *(M+2)> &L_mailbox) noexcept
 Construit les mailbox en fonction des dimenssions du plateau.
 

Attributs privés

std::vector< std::pair< std::array< bool, N *M >, std::complex< double > > > m_board
 Le tableau de toutes les instances possibles du plateau.
 
std::array< Piece, N *M > m_piece_board
 Le plateau indiquant le type des pièces.
 
std::array< int, N *M > m_S_mailbox
 La petite mailbox.
 
std::array< int,(N+4) *(M+2)> m_L_mailbox
 La grande mailbox.
 
Color m_color_current_player
 Color::WHITE si c'est aux blanc de jouer aux noirs sinon.
 
std::array< bool, 2 > m_k_castle
 Vrai si les noirs[0] / blancs[1] peuvent faire le petit roque.
 
std::array< bool, 2 > m_q_castle
 Vrai si les noirs[0] / blancs[1] peuvent faire le grand roque.
 
std::optional< Coordm_ep
 Contient la case sur laquelle il est possible de faire une prise en passant qui est vide (la case occupé si le pion avait avancé d'une seule case)
 

Amis

class Piece
 
template<std::size_t _N, std::size_t _M>
CONSTEXPR bool check_path_straight_1_instance (Board< _N, _M > const &board, Coord const &dpt, Coord const &arv, std::size_t position, std::optional< Coord >)
 
template<std::size_t _N, std::size_t _M>
CONSTEXPR bool check_path_diagonal_1_instance (Board< _N, _M > const &board, Coord const &dpt, Coord const &arv, std::size_t position, std::optional< Coord >)
 
template<std::size_t _N, std::size_t _M>
CONSTEXPR bool check_path_queen_1_instance (Board< _N, _M > const &board, Coord const &dpt, Coord const &arv, std::size_t position, std::optional< Coord >)
 

Description détaillée

template<std::size_t N = 8, std::size_t M = N>
class Board< N, M >

La classe représentant le plateau de jeu.

Paramètres du template
NLe nombre de ligne du plateau
MLe nombre de colonne du plateau

Documentation des constructeurs et destructeur

◆ Board() [1/5]

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board< N, M >::Board ( )

◆ Board() [2/5]

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board< N, M >::Board ( std::initializer_list< std::initializer_list< Piece > > const & board)

◆ Board() [3/5]

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board< N, M >::Board ( std::ranges::common_range auto const & board)

Initialise le plateau à partir d'un ensemble de pièce, les pièces ne sont pas divisées initialement.

Paramètres
[in]boardDouble initializer_list sur des Piece

◆ Board() [4/5]

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board< N, M >::Board ( Board< N, M > const & )
default

◆ Board() [5/5]

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board< N, M >::Board ( Board< N, M > && )
default

◆ ~Board()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board< N, M >::~Board ( )
default

Documentation des fonctions membres

◆ all_move()

template<std::size_t N = 8, std::size_t M = N>
template<class UnitaryFunction>
CONSTEXPR void Board< N, M >::all_move ( UnitaryFunction func,
std::optional< Color > color_player = std::nullopt ) const
noexcept

Applique une fonction à l'entiéreté des mouvements possible.

Paramètres
[in,out]funcLa fonction à appliquer sur tout les mouvements Prototype : bool f(Move const&) Si renvoie true alors le parcourt est intérompue
[in]colorLa couleur du joueur auquel on récupère les mouvements

◆ capture_pawn()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::capture_pawn ( Coord const & s,
Coord const & t,
std::optional< bool > val_mes = std::nullopt )
private

Mouvement de capture dun pion. A la différence d'un mouvement de "capture jump", on mesure la présence de la cible car le pion a besoin de la cible pour se déplacer.

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres
[in]sCoordonnées de la source
[in]tCoordonnées de la cible
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true si le mouvement à etait effectué
false sinon

◆ change_player()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::change_player ( )
noexcept

Change le joueur actuel et passe la main à l'autre joueur.

◆ check_if_use_move_promote()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::check_if_use_move_promote ( Coord const & pos) const
noexcept

Teste si les mouvement de la piece sont si la pièce est un pion un mouvement de promotion.

Note
peut etre utiliser sans verifier si la pièce est un pion
Paramètres
[in]posLa position de la pièce
Renvoie
true si le mouvement possible est un mouvement de promotion
false sinon

◆ get_current_player()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Color Board< N, M >::get_current_player ( ) const
noexcept

Recupère la couleur du joueur au tour de jouer.

Renvoie
Color la couleur du joueur

◆ get_list_normal_move()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR std::forward_list< Coord > Board< N, M >::get_list_normal_move ( Coord const & pos) const

Renvoie la liste dans tous les mouvements classiques légaux d'une pièce.

Paramètres
posPosition de la pièce
Renvoie
std::forward_list<Coord> La liste de coordonnées des positions d'arrivées de chaque mouvement possible

◆ get_list_promote()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR std::forward_list< Move > Board< N, M >::get_list_promote ( Coord const & pos) const
noexcept

Renvoie la liste de toutes les promotions.

Avertissement
Ne verifie pas la validité du mouvement, de la position ou du type de la pièce
Paramètres
[in]posLa position du pion
Renvoie
La liste de tout les mouvements de promotion

◆ get_list_split_move()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR std::forward_list< Coord > Board< N, M >::get_list_split_move ( Coord const & pos) const

Renvoie la liste de toutes les cases qu'une pièce peut atteindre lors d'un mouvement split, il faut choisir deux éléments de la liste pour créer un mouvement split.

Paramètres
[in]posPosition de la pièce.
Renvoie
std::forward_list<Coord> La liste de coordonnées des positions d'arrivées possible sachant que chaque élément représente une seule des deux cases d'arrivées d'un split move

◆ get_proba()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR double Board< N, M >::get_proba ( Coord const & pos) const
noexcept

Renvoie la probabilité qu'il y ait une pièce à une position.

Paramètres
posLa position

◆ get_proba_mesure()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR double Board< N, M >::get_proba_mesure ( Coord const & p) const
privatenoexcept

Renvoie la probabilité que la fonction mesure renvoie true, c'est-à-dire la proba que le mouvement soit"réussi".

Paramètres
pCoordonnées de la case
Renvoie
La probabilité

◆ get_proba_mesure_capture_slide()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR double Board< N, M >::get_proba_mesure_capture_slide ( Coord const & s,
Coord const & t,
std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path ) const
privatenoexcept

Renvoie la probabilité que la fonction mesure_capture_slide renvoie true, c'est-à-dire la proba que le mouvement de capture_slide soit"réussi".

Paramètres
sCoordonnées de la source
tCoordonnées de la cible
check_pathFonction qui teste la présence d'une pièce entre une source et une cible
Renvoie
La probabilité

◆ get_proba_mesure_castle()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR double Board< N, M >::get_proba_mesure_castle ( Coord const & king,
Coord const & rook ) const
privatenoexcept

Renvoie laprobabilité que la fonction mesure_castle renvoie true, c'est-à-dire la proba que le mouvement de roque soit"réussi".

Paramètres
kingCoordonnées du roi
rookCoordonnées de la tour
Renvoie
La probabilité

◆ get_proba_move()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR double Board< N, M >::get_proba_move ( Move const & move) const
noexcept

Renvoie la probabilité que le mouvement soit réalisé

Paramètres
moveLe mouvement à réaliser
Renvoie
Une probabilité comprise entre 0 et 1

◆ init_mailbox()

template<std::size_t N = 8, std::size_t M = N>
static CONSTEXPR void Board< N, M >::init_mailbox ( std::array< int, N *M > & S_mailbox,
std::array< int,(N+4) *(M+2)> & L_mailbox )
staticprivatenoexcept

Construit les mailbox en fonction des dimenssions du plateau.

Paramètres
[out]S_mailboxLa petite mailbox de la taille du plateau
[out]L_mailboxLa grande mailbox comportant 4 ligne de plus et 2 colonne de plus
Renvoie
CONSTEXPR

◆ king_side_castle()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::king_side_castle ( Coord const & king,
Coord const & rook,
std::optional< bool > val_mes = std::nullopt )
private

Mouvement du petit roque.

Avertissement
Auncun test sur la validité du mouvement
Paramètres
[in]kingCoordonnées du roi
[in]rookCoordonnées de la tour
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non

◆ mesure()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::mesure ( Coord const & p,
std::optional< bool > val_mes = std::nullopt )
private

Mesure la présence d'une pièce.

Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]positionLa position de la pièce mesurée
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true Si la pièce est présente sur la case position
false Sinon

◆ mesure_capture_slide()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::mesure_capture_slide ( Coord const & s,
Coord const & t,
std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path,
std::optional< bool > val_mes = std::nullopt )
private

Fonction qui permet de faire une mesure dans le cas d'un mouvement "capture slide".

Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source du mouvement
[in]tCoordonnées de la cible du mouvement
[in]check_pathFonction qui permet de vérifier si il y a une pièce entre la source et la cible sur une instance du plateau
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true Si la mesure indique de faire le mouvement
false Sinon

◆ mesure_castle()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::mesure_castle ( Coord const & king,
Coord const & rook,
std::optional< bool > val_mes = std::nullopt )
private

Fonction qui permet de mesurer la possibilité de faire le roque.

Paramètres
[in]kingCoordonnées du roi
[in]rookCoordonnées de la tour
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true si le roque est possible
false sinon

◆ modify()

template<std::size_t N = 8, std::size_t M = N>
template<std::size_t Q>
CONSTEXPR void Board< N, M >::modify ( std::array< std::pair< std::array< bool, Q >, std::complex< double > >, 2 > const & arrayQubit,
std::size_t position_board,
std::array< std::size_t, Q > const & tab_positions )
private

fonction auxiliaire qui permet de modifier un plateau à l'aide d'un array de la forme du type de retour de la fonction qubitToArray, le deuxième éléments du tableau à une probalité non nulle lors d'un mouvement split

Paramètres du template
QLa taille du qubit
NLe nombre de ligne du plateau
MLe nombre de collone du plateau
Paramètres
[in]arrayQubitType de retour de la fonction quibitToArray, représente la facon dont va être modifier m_board
[in]position_boardL'indice du plateau dans le tableau de toutes les instances du plateau
[in]tab_positionsTableau des indices des cases modifiées, on utilise N*M+1 pour signifier que le qubit en question est un qubit auxiliaire qui ne modifie pas le board

◆ move()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move ( Move const & movement,
std::optional< bool > val_mes = std::nullopt )

Réalise un mouvement d'une pièce quelque soit le type du mouvement (classic, split, merge)

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres
[in]movementLe mouvement à raliser
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non

◆ move_1_instance()

template<std::size_t N = 8, std::size_t M = N>
template<std::size_t Q>
CONSTEXPR void Board< N, M >::move_1_instance ( std::array< bool, Q > const & case_modif,
std::size_t position,
CMatrix< _2POW(Q)> const & matrix,
std::array< std::size_t, Q > const & tab_positions )
privatenoexcept

Fonction qui permet d'effectuer un mouvement sur une instance du plateau.

Paramètres du template
NLe nombre de ligne du plateau
MLe nombre de colonnes du plateau
QLa taille du qubit
Paramètres
[in]case_modifPermet d'initialiser le qubit
[in]positionL'instance du plateau modifiée
[in]matrixLa matrice du mouvement que l'on veut effectuer
[in]tab_positionsLa position sur le plateau des variables utilisées dans le qubit, que l'on met à N*M+1 si les variables ne représentent pas des pièces

◆ move_classic()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_classic ( Coord const & s,
Coord const & t,
std::optional< bool > val_mes )
private

Mouvement classique d'une pièce (pion exclu)

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres du template
NLe nombre de ligne du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source du mouvement
[in]tCoordonnées de la cible du mouvement

◆ move_classic_jump()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_classic_jump ( Coord const & s,
Coord const & t,
std::optional< bool > val_mes = std::nullopt )
private

Mouvement classique d'une pièce qui "saute" (cavalier, roi)

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres du template
NLe nombre de ligne du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source du mouvement
[in]tCoordonnées de la cible du mouvement
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non

◆ move_classic_slide()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_classic_slide ( Coord const & s,
Coord const & t,
std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path,
std::optional< bool > val_mes = std::nullopt )
private

Mouvement classique d'un pièce qui "glisse" (fou, dame, tour)

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres du template
NLe nombre de lignes
MLe nombre de colonnes
Paramètres
[in]sCoordonnées de la source
[in]tCoordonnées de la cible
[in]check_pathFonction qui permet de vérifier la présence d'une pièce entre la source et la cible sur une instance du plateau
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non

◆ move_enpassant()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::move_enpassant ( Coord const & s,
Coord const & t,
Coord const & ep,
std::optional< bool > val_mes = std::nullopt )
private

Permet d'effectuer un mouvement de prise en passant.

Avertissement
Aucun test sur la validité de la cible et de la cible en passant, ni sur le type de la pièce
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnnes du plateau
Paramètres
[in]sLes coordonnées de la source
[in]tLes coordonnées de la cible (l'endroit où arrive le pion)
[in]epLes coordonnées du pion capturer "en passant"
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true si le mouvement à etait effectué
false sinon

◆ move_is_legal()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::move_is_legal ( Move const & move) const

Test si un mouvement est réalisable.

Paramètres
[in]moveLe mouvement à tester
Renvoie
true si le mouvement est légal

◆ move_merge()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_merge ( Coord const & s1,
Coord const & s2,
Coord const & t )
private

Mouvement de merge de pièce (pion exclu)

Avertissement
Aucun test sur la validité du mouvement (cible vide, pièce identique sur les sources, ect)
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]s1Coordonnées de la source 1
[in]s2Coordonnées de la source 2
[in]tCoordonnées de la cible

◆ move_merge_jump()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_merge_jump ( Coord const & s,
Coord const & t1,
Coord const & t2 )
private

Mouvement de merge.

Avertissement
Aucun test sur la validité du mouvement (cible vide, pièce identique sur les sources, ect)
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]s1Coordonnées de la source 1
[in]s2Coordonnées de la source 2
[in]tCoordonnées de la cible

◆ move_merge_slide()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_merge_slide ( Coord const & s1,
Coord const & s2,
Coord const & t,
std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path )
private

Mouvement de merge.

Avertissement
Aucun test sur la validité du mouvement (cible vide, pièce identique sur les sources, ect)
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]s1Coordonnées de la source 1
[in]s2Coordonnées de la source 2
[in]tCoordonnées de la cible
[in]check_pathFonction qui permet de vérifier la présence d'une pièce entre la source et la cible sur une instance du plateau

◆ move_pawn()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::move_pawn ( Coord const & s,
Coord const & t,
std::optional< bool > val_mes = std::nullopt )
privatenoexcept

Gère tout les mouvements d'un pion.

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source
[in]tCoordonnées de la cible
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true si le mouvement à etait effectué
false sinon

◆ move_pawn_one_step()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::move_pawn_one_step ( Coord const & s,
Coord const & t,
std::optional< bool > val_mes = std::nullopt )
private

Le mouvement de piond'une case fonctionne comme un mouvementde jump classique, à la différence qu'un pion ne peut pas capturer une pièce en avançant. On mesure de la même façon qu'un jump classique en considérant toutes les pièces comme des pièces alliées.

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source
[in]tCoordonnées de la cible
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true si le mouvement à etait effectué
false sinon

◆ move_pawn_two_step()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::move_pawn_two_step ( Coord const & s,
Coord const & t,
std::optional< bool > val_mes = std::nullopt )
private

Le mouvement de pion de deux cases fonctionne comme un mouvement de slide classique, à la différence qu'un pion ne peut pas capturer une pièce en avançant, on mesure de la même façon qu'un slide classique en considérant toutes les pièces comme des pièces alliées.

Avertissement
Aucun test sur la possibilité de faire un mouvement de deux cases du pion, pas de mise a jour du board sur la prise en passant
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source
[in]tCoordonnées de la cible
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non
Renvoie
true si le mouvement à etait effectué
false sinon

◆ move_promotion()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_promotion ( Move const & move,
std::optional< bool > val_mes = std::nullopt )

Fonction qui permet de faire un mouvement de pion quelconque avec une promotion.

Paramètres
sCoordonnées de la source
tCoordonnées de la cible
pLe type de la pièce de la promotion
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non

◆ move_split()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_split ( Coord const & s,
Coord const & t1,
Coord const & t2 )
private

Mouvement split d'une pièce (pion exclu)

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres du template
NLe nombre de ligne du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source du mouvement
[in]t1Coordonnées de la cible 1 (qui doit être vide)
[in]t2Coordonnées de la cible 2 (qui doit être vide)

◆ move_split_jump()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_split_jump ( Coord const & s,
Coord const & t1,
Coord const & t2 )
private

Mouvement "split jump".

Avertissement
Aucun tests sur la validité du mouvement (cible vide, ect)
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source du mouvement
[in]t1Coordonnées de la cible 1 (qui doit être vide)
[in]t2Coordonnées de la cible 2 (qui doit être vide)

◆ move_split_slide()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::move_split_slide ( Coord const & s,
Coord const & t1,
Coord const & t2,
std::function< bool(Board< N, M > const &, Coord const &, Coord const &, std::size_t, std::optional< Coord >)> check_path )
private

Mouvement "split slide".

Avertissement
Aucun tests sur la validité du mouvement (cible vide, ect)
Paramètres du template
NLe nombre de lignes du plateau
MLe nombre de colonnes du plateau
Paramètres
[in]sCoordonnées de la source du mouvement
[in]t1Coordonnées de la cible 1 (qui doit être vide)
[in]t2Coordonnées de la cible 2 (qui doit être vide)
[in]check_pathFonction qui permet de vérifier la présence d'une pièce entre la source et la cible sur une instance du plateau

◆ numberColumns()

template<std::size_t N = 8, std::size_t M = N>
static CONSTEXPR std::size_t Board< N, M >::numberColumns ( )
staticnoexcept

Retourne le nombre de colonne.

Renvoie
std::size_t Le nombre de colonne

◆ numberLines()

template<std::size_t N = 8, std::size_t M = N>
static CONSTEXPR std::size_t Board< N, M >::numberLines ( )
staticnoexcept

Retourne le nombre de ligne du plateau.

Renvoie
std::size_t Le nombre de ligne

◆ offset()

template<std::size_t N = 8, std::size_t M = N>
static CONSTEXPR std::size_t Board< N, M >::offset ( std::size_t ligne,
std::size_t colonne )
staticprivatenoexcept

Renvoie une position 1D d'une coordonnée 2D.

Paramètres
[in]ligneL'indice de ligne
[in]colonneL'indice de colonne
Renvoie
std::size_t La position en 1D

◆ operator()()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Piece const & Board< N, M >::operator() ( std::size_t n,
std::size_t m ) const
noexcept

Retourne un pointeur sur la piece à l'emplacement cible.

Paramètres
[in]nL'indice de la ligne
[in]mL'indice de la colonne
Renvoie
Un pointeur observateur sur une piece ou Piece() si la case est vide

◆ operator=() [1/2]

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board & Board< N, M >::operator= ( Board< N, M > && )
default

◆ operator=() [2/2]

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR Board & Board< N, M >::operator= ( Board< N, M > const & )
default

◆ queen_side_castle()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR void Board< N, M >::queen_side_castle ( Coord const & king,
Coord const & rook,
std::optional< bool > val_mes = std::nullopt )
private

Mouvement du grand roque.

Avertissement
Ne procède aucune vérification sur la validité du mouvement
Paramètres
[in]kingCoordonnées du roi
[in]rookCoordonnées de la tour
[in]val_mesOptionel peut determiner la mesure de la présence d'une pièce ou non

◆ range_to_2_array()

template<std::size_t N = 8, std::size_t M = N>
static CONSTEXPR void Board< N, M >::range_to_2_array ( std::ranges::common_range auto const & board,
std::array< bool, N *M > & first_instance,
std::array< Piece, N *M > & piece_board )
staticprivatenoexcept

Initialise un plateau à l'aide d'un container 2D.

Paramètres
[in]boardUn container 2D
[out]first_instanceLe tableau de la première instance du plateau
[out]piece_boardLe plateau contenant les pièces

◆ update_board()

template<std::size_t N = 8, std::size_t M = N>
void Board< N, M >::update_board ( )
privatenoexcept

Fonction qui permet de mattre à jour le plateau, car ce mouvement entraine l'apparition de plusieurs instance de board identique, il faut donc les concaténer en ajoutant les probas, si la proba vaut 0, on supprime l'instance.

Avertissement
Complexité en k² x N x M, avec k la taille de m_board c'est à dire le nombre d'instance du plateau, N et M les dimensions du plateau

◆ update_board_classic()

template<std::size_t N = 8, std::size_t M = N>
void Board< N, M >::update_board_classic ( )
privatenoexcept

◆ update_case()

template<std::size_t N = 8, std::size_t M = N>
void Board< N, M >::update_case ( std::size_t pos)
privatenoexcept

Vérifie si la case à une possibilité de contenir une pièce, et si elle n'en a pas modifie m_piece_board en nullptr.

Paramètres
posLes coordonnées de a position de la case a vérifier.

◆ winning_position()

template<std::size_t N = 8, std::size_t M = N>
CONSTEXPR bool Board< N, M >::winning_position ( Color c) const
noexcept

Test si un plateau est gagnant pour une couleur.

Paramètres
[in]cCouleur
Renvoie
true si la position est gagnante pour la couleur c
false sinon

Documentation des fonctions amies et associées

◆ check_path_diagonal_1_instance

template<std::size_t N = 8, std::size_t M = N>
template<std::size_t _N, std::size_t _M>
CONSTEXPR bool check_path_diagonal_1_instance ( Board< _N, _M > const & board,
Coord const & dpt,
Coord const & arv,
std::size_t position,
std::optional< Coord >  )
friend

◆ check_path_queen_1_instance

template<std::size_t N = 8, std::size_t M = N>
template<std::size_t _N, std::size_t _M>
CONSTEXPR bool check_path_queen_1_instance ( Board< _N, _M > const & board,
Coord const & dpt,
Coord const & arv,
std::size_t position,
std::optional< Coord >  )
friend

◆ check_path_straight_1_instance

template<std::size_t N = 8, std::size_t M = N>
template<std::size_t _N, std::size_t _M>
CONSTEXPR bool check_path_straight_1_instance ( Board< _N, _M > const & board,
Coord const & dpt,
Coord const & arv,
std::size_t position,
std::optional< Coord >  )
friend

◆ Piece

template<std::size_t N = 8, std::size_t M = N>
friend class Piece
friend

Documentation des données membres

◆ m_board

template<std::size_t N = 8, std::size_t M = N>
std::vector<std::pair<std::array<bool, N * M>, std::complex<double> > > Board< N, M >::m_board
private

Le tableau de toutes les instances possibles du plateau.

◆ m_color_current_player

template<std::size_t N = 8, std::size_t M = N>
Color Board< N, M >::m_color_current_player
private

Color::WHITE si c'est aux blanc de jouer aux noirs sinon.

◆ m_ep

template<std::size_t N = 8, std::size_t M = N>
std::optional<Coord> Board< N, M >::m_ep
private

Contient la case sur laquelle il est possible de faire une prise en passant qui est vide (la case occupé si le pion avait avancé d'une seule case)

◆ m_k_castle

template<std::size_t N = 8, std::size_t M = N>
std::array<bool, 2> Board< N, M >::m_k_castle
private

Vrai si les noirs[0] / blancs[1] peuvent faire le petit roque.

◆ m_L_mailbox

template<std::size_t N = 8, std::size_t M = N>
std::array<int, (N + 4) * (M + 2)> Board< N, M >::m_L_mailbox
private

La grande mailbox.

◆ m_piece_board

template<std::size_t N = 8, std::size_t M = N>
std::array<Piece, N * M> Board< N, M >::m_piece_board
private

Le plateau indiquant le type des pièces.

◆ m_q_castle

template<std::size_t N = 8, std::size_t M = N>
std::array<bool, 2> Board< N, M >::m_q_castle
private

Vrai si les noirs[0] / blancs[1] peuvent faire le grand roque.

◆ m_S_mailbox

template<std::size_t N = 8, std::size_t M = N>
std::array<int, N * M> Board< N, M >::m_S_mailbox
private

La petite mailbox.


La documentation de cette classe a été générée à partir du fichier suivant :