From 9af05c593f57060d2532d80556ab1bc306660dc0 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sat, 20 Aug 2022 15:50:26 +0300 Subject: fix: do not allow pawn jump through pieces --- src/main.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index f8f47e2..e3b043c 100644 --- a/src/main.c +++ b/src/main.c @@ -146,11 +146,9 @@ int validate_move(Move move, int color, int* board) { case PAWN: if (piece & BLACK) { if (board[move.destination] != EMPTY) legal_move = blackPawnAttackMoves; - else if (move.origin >> 4 == 6) legal_move = newBlackPawnMoves; else legal_move = blackPawnMoves; } else { if (board[move.destination] != EMPTY) legal_move = pawnAttackMoves; - else if (move.origin >> 4 == 1) legal_move = newPawnMoves; else legal_move = pawnMoves; } break; @@ -168,7 +166,14 @@ int validate_move(Move move, int color, int* board) { } if (target_piece != EMPTY) break; - if ((piece & NO_COLOR) == PAWN || (piece & NO_COLOR) == KNIGHT || (piece & NO_COLOR) == KING) break; + if ( + (piece & NO_COLOR) == PAWN && + !( + (move.origin >> 4 == 6 || move.origin >> 4 == 1) && // Pawn is new + abs(move.origin - square) == 16 // And this is only first move + ) + ) break; + if ((piece & NO_COLOR) == KNIGHT || (piece & NO_COLOR) == KING) break; } legal_move++; } -- cgit v1.2.3