From 40767a0c4ff84af71dc00c11d27186c7cd1ab973 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 29 Jul 2026 17:15:28 +0200 Subject: changes --- src/moves.cpp | 50 ++++++++++++-------------------------------------- 1 file changed, 12 insertions(+), 38 deletions(-) (limited to 'src/moves.cpp') diff --git a/src/moves.cpp b/src/moves.cpp index 2663ea0..f741b7f 100644 --- a/src/moves.cpp +++ b/src/moves.cpp @@ -164,6 +164,17 @@ std::vector GetLegalMoves(Game *g) { } } + return legalMoves; +} +GameState GetNewGameState(Game *g) { + auto legalMoves = GetLegalMoves(g); + + // make sure we dont override game ending states + if (g->state == DRAW || g->state == STALEMATE || g->state == WHITE_WON || + g->state == BLACK_WON) { + return g->state; + } + if (legalMoves.empty()) { Position kingPosition = FindKing(g, g->turn); @@ -175,44 +186,7 @@ std::vector GetLegalMoves(Game *g) { g->state = STALEMATE; } } - - for (Move move : moves) { - bool isLegal = true; - UndoMove undo = MakeMove(move, g); - auto opponentResponse = GetPseudoLegalMoves(g); - for (Move move : opponentResponse) { - if (g->pieces[PositionToIndex(move.To)].type == KING) { - isLegal = false; - } - } - UnMakeMove(undo, g); - if (isLegal) { - legalMoves.push_back(move); - }; - } - if (legalMoves.size() == 0) { - bool isCheck = false; - - Game testBoard = *g; - testBoard.turn = !testBoard.turn; - auto opponentResponse = GetPseudoLegalMoves(&testBoard); - for (Move move : opponentResponse) { - if (testBoard.pieces[PositionToIndex(move.To)].type == KING) { - isCheck = true; - } - } - - if (isCheck) { - if (g->turn) { - g->state = BLACK_WON; - } else { - g->state = WHITE_WON; - }; - } else { - g->state = STALEMATE; - } - } - return legalMoves; + return TURN; } bool IsSquareAttacked(Game *board, Position square, bool white) { -- cgit v1.2.3