1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 02:08:11 +00:00

Chess: Added ability to resign and flip the board

This patch adds options to the app's menubar to resign the game and
flip the board.
This commit is contained in:
AnicJov 2020-12-04 13:17:00 +01:00 committed by Andreas Kling
parent 694f68ab86
commit 01b62cc7f4
5 changed files with 76 additions and 0 deletions

View file

@ -512,6 +512,9 @@ Move Board::random_move(Colour colour) const
Board::Result Board::game_result() const
{
if (m_resigned != Colour::None)
return (m_resigned == Colour::White) ? Result::WhiteResign : Result::BlackResign;
bool sufficient_material = false;
bool no_more_pieces_allowed = false;
Optional<Square> bishop;
@ -684,4 +687,40 @@ bool Board::operator==(const Board& other) const
return turn() == other.turn();
}
void Board::set_resigned(Chess::Colour c)
{
m_resigned = c;
}
String Board::result_to_string(Result r) const
{
switch (r) {
case Result::CheckMate:
if (m_turn == Chess::Colour::White)
return "Black wins by Checkmate";
else
return "White wins by Checkmate";
case Result::WhiteResign:
return "Black wins by Resignation";
case Result::BlackResign:
return "White wins by Resignation";
case Result::StaleMate:
return "Draw by Stalemate";
case Chess::Board::Result::FiftyMoveRule:
return "Draw by 50 move rule";
case Chess::Board::Result::SeventyFiveMoveRule:
return "Draw by 75 move rule";
case Chess::Board::Result::ThreeFoldRepetition:
return "Draw by threefold repetition";
case Chess::Board::Result::FiveFoldRepetition:
return "Draw by fivefold repetition";
case Chess::Board::Result::InsufficientMaterial:
return "Draw by insufficient material";
case Chess::Board::Result::NotFinished:
return "Game not finished";
default:
ASSERT_NOT_REACHED();
}
}
}