mirror of
https://github.com/tiyn/yeschess.git
synced 2025-04-01 14:47:44 +02:00
chess bugfix: en passant square creation
The en passant square is only important if it is target of an enemy pawn. If that is not the case it should not be set and shouldn't appear in the fen string either. Now it is checked if the en passant square is the target of an enemy pawn
This commit is contained in:
parent
5e796751d7
commit
23a97ae9fe
@ -792,11 +792,14 @@ proc checkedMove*(chess: var Chess, move: Move): bool {.discardable.} =
|
||||
chess.uncheckedMove(start, dest)
|
||||
chess.toMove = Color(ord(chess.toMove)*(-1))
|
||||
if createEnPassant:
|
||||
chess.enPassantSquare = dest - (N * ord(color))
|
||||
if chess.board[dest + E] == BPawn * ord(color) or
|
||||
chess.board[dest + W] == BPawn * ord(color):
|
||||
chess.enPassantSquare = dest - (N * ord(color))
|
||||
if capturedEnPassant:
|
||||
chess.board[dest - (N * ord(color))] = 0
|
||||
if ((fieldToInd("h8") < dest and dest < fieldToInd("a8")) or (fieldToInd("h1") < dest and dest < fieldToInd("a1"))) and
|
||||
chess.board[dest] == WPawn * ord(color):
|
||||
if ((fieldToInd("h8") < dest and dest < fieldToInd("a8")) or
|
||||
(fieldToInd("h1") < dest and dest < fieldToInd("a1"))) and
|
||||
chess.board[dest] == WPawn * ord(color):
|
||||
chess.board[dest] = prom
|
||||
chess.previousBoard.add(chess.board)
|
||||
chess.halfMoveClock = chess.halfMoveClock + 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user