There can now be more than one queen on the board (LoL)

This commit is contained in:
Mattia Giambirtone 2023-10-16 09:39:17 +02:00
parent 56628cac27
commit f1c09e302e
1 changed files with 11 additions and 9 deletions

View File

@ -23,7 +23,7 @@ type
# Useful type aliases
Location = tuple[row, col: int]
Pieces = tuple[king: Location, queen: Location, rooks: seq[Location],
Pieces = tuple[king: Location, queens: seq[Location], rooks: seq[Location],
bishops: seq[Location], knights: seq[Location],
pawns: seq[Location]]
@ -153,7 +153,7 @@ proc newChessboardFromFEN*(state: string): ChessBoard =
of Rook:
result.pieces.black.rooks.add((row, column))
of Queen:
result.pieces.black.queen = (row, column)
result.pieces.black.queens.add((row, column))
of King:
result.pieces.black.king = (row, column)
else:
@ -169,7 +169,7 @@ proc newChessboardFromFEN*(state: string): ChessBoard =
of Rook:
result.pieces.white.rooks.add((row, column))
of Queen:
result.pieces.white.queen = (row, column)
result.pieces.white.queens.add((row, column))
of King:
result.pieces.white.king = (row, column)
else:
@ -274,7 +274,7 @@ proc countPieces*(self: ChessBoard, kind: PieceKind, color: PieceColor): int =
of Rook:
return self.pieces.white.rooks.len()
of Queen:
return int(self.pieces.white.queen != (-1, -1))
return self.pieces.white.queens.len()
of King:
# There shall be only one, forever
return 1
@ -291,7 +291,7 @@ proc countPieces*(self: ChessBoard, kind: PieceKind, color: PieceColor): int =
of Rook:
return self.pieces.black.rooks.len()
of Queen:
return int(self.pieces.black.queen != emptyLocation())
return self.pieces.black.queens.len()
of King:
return 1
else:
@ -443,7 +443,7 @@ proc removePiece(self: ChessBoard, location: Location) =
of Rook:
self.pieces.white.rooks.delete(self.pieces.white.rooks.find(location))
of Queen:
self.pieces.white.queen = emptyLocation()
self.pieces.white.queens.delete(self.pieces.white.rooks.find(location))
of King:
doAssert false, "removePiece: attempted to remove the white king"
else:
@ -459,7 +459,7 @@ proc removePiece(self: ChessBoard, location: Location) =
of Rook:
self.pieces.black.rooks.delete(self.pieces.black.rooks.find(location))
of Queen:
self.pieces.black.queen = emptyLocation()
self.pieces.black.queens.delete(self.pieces.black.rooks.find(location))
of King:
doAssert false, "removePiece: attempted to remove the black king"
else:
@ -500,7 +500,8 @@ proc updatePositions(self: ChessBoard, move: Move) =
self.pieces.white.rooks.delete(self.pieces.white.rooks.find(move.startSquare))
self.pieces.white.rooks.add(move.targetSquare)
of Queen:
self.pieces.white.queen = move.targetSquare
self.pieces.white.queens.delete(self.pieces.white.queens.find(move.startSquare))
self.pieces.white.queens.add(move.targetSquare)
of King:
self.pieces.white.king = move.targetSquare
else:
@ -520,7 +521,8 @@ proc updatePositions(self: ChessBoard, move: Move) =
self.pieces.black.rooks.delete(self.pieces.black.rooks.find(move.startSquare))
self.pieces.black.rooks.add(move.targetSquare)
of Queen:
self.pieces.black.queen = move.targetSquare
self.pieces.black.queens.delete(self.pieces.black.queens.find(move.startSquare))
self.pieces.white.queens.add(move.targetSquare)
of King:
self.pieces.black.king = move.targetSquare
else: