-
Notifications
You must be signed in to change notification settings - Fork 0
/
echiquier.hh
82 lines (66 loc) · 2.24 KB
/
echiquier.hh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#pragma once
class Echiquier; // forfward declaration
#include <iostream>
#include "piece.hh"
#include "square.hh"
enum erreurDeplacement{
ok,
srcvide,
appartenance,
checkgeometric,
collision,
echeque,
dejabougerR,
dejabougerT,
TK,
prisepasantfail
};
struct main_joueur
{
Piece ** board_piece;
Piece ** board_pion;
char sens;
};
class Echiquier
{
private:
Piece * echiquier[8][8];
//faire des vecteur comme un clochard
Pion * pionsb[8];//nombre de Pion par joueur
Pion * pionsn[8];
Piece * piecesb[16];//nombre de Piece par joueur
Piece * piecesn[16];
Square pion_passant;
Square bak_pion_passant;
erreurDeplacement pseudocheck(Piece * piece,Square position_dst,bool print_err=false);
bool slidecheck(Piece * source,Square const position_dst,bool force=false);
erreurDeplacement move_piece(Piece * piece,Square position_dst,bool passant=false);
//opti ?
void pose_piece(Piece * piece);
void pose_piece(Piece * piece,Piece * dst);
void pose_piece(Piece * piece,Square dst);
void vider_case(Piece * piece);
void vider_case(Square piece);
Piece * get_piece(Square const square) const; //peut etre priver a la fin ?
bool est_case_vide(Square const square) const;
main_joueur get_main_joueur(Couleur couleur);
void del_board_piece(Piece * pos_piece);
void del_board_piece(Piece * piece, Piece * address_piece_effacer);
public:
erreurDeplacement rocker(Couleur couleur,bool grand);
Square get_pos();
bool isstuck(Couleur couleur_joueur,bool en_echeque);
bool chk_echec_roi(Couleur couleur_joueur);
std::string canonical_position() const;
std::string pgn_piece_name(std::string const name,bool view_pawn=false,bool view_color=false) const;
erreurDeplacement deplace(Piece* piece, Square dst,Couleur couleur_joueur,bool print_err=false);
erreurDeplacement deplace(Square piece, Square dst,Couleur couleur_joueur,bool print_err=false);
bool promote(Square piece);
Echiquier();
Echiquier(const Echiquier &obj);
~Echiquier();
void affiche (Echiquier const * obj=nullptr) const;
void print_all_piece();
void comparer(const Echiquier &obj);
void rst_passant();
};