There can now be more than one queen on the board (LoL)
This commit is contained in:
parent
56628cac27
commit
f1c09e302e
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue