diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChessArbiter.cpp | 7 | ||||
| -rw-r--r-- | src/ChessArbiter.hpp | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/ChessArbiter.cpp b/src/ChessArbiter.cpp index dece4b9..2830bc1 100644 --- a/src/ChessArbiter.cpp +++ b/src/ChessArbiter.cpp @@ -3,7 +3,7 @@ namespace chessarbiter { ChessArbiter::ChessArbiter() : wPawn(1), wRook(5), wKnight(3), wBishop(3), wQueen(9), wKing(0), SAN(""), - capture(' '), was_enpassant(false) { + capture(' '), was_enpassant(false), was_pawn_promotion(false) { Setup("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); } @@ -51,6 +51,7 @@ bool ChessArbiter::Play(const std::string &move, char promote) { SAN = ""; capture = ' '; was_enpassant=false; + was_pawn_promotion=false; if (IsCapture) { capture = board.GetPieceAt(dst).piece; @@ -131,10 +132,12 @@ bool ChessArbiter::Play(const std::string &move, char promote) { board.RemovePiece(dst); board.AddPiece(tolower(promote),dst); SAN+="="+toupper(promote); + was_pawn_promotion=true; } else if(dst[1]=='8'){ board.RemovePiece(dst); board.AddPiece(toupper(promote),dst); SAN+="="+toupper(promote); + was_pawn_promotion=true; } } // Captures reset half moves @@ -189,6 +192,8 @@ bool ChessArbiter::Play(const std::string &move, char promote) { bool ChessArbiter::WasEnPassant() { return (was_enpassant); } +bool ChessArbiter::WasPawnPromotion() { return (was_pawn_promotion); }; + bool ChessArbiter::IsAttacked(const std::string &square, bool by) { std::vector<std::string> moves = board.ListPossibleMoves(by); for (std::string &m : moves) { diff --git a/src/ChessArbiter.hpp b/src/ChessArbiter.hpp index c29dd32..aec0342 100644 --- a/src/ChessArbiter.hpp +++ b/src/ChessArbiter.hpp @@ -33,7 +33,7 @@ class ChessArbiter { void SetFEN(const FEN &fen); std::string SAN, SAN_last; char capture; - bool was_enpassant; + bool was_enpassant, was_pawn_promotion; public: ChessArbiter(); @@ -69,6 +69,7 @@ public: bool IsDrawByRepetitions(); bool IsDraw(); bool WasEnPassant(); + bool WasPawnPromotion(); std::string ParseSAN(const std::string &SANMove); char ParseSANPromotion(const std::string &SANMove); }; |
