|
|
|
from strutils import parseInt
|
|
|
|
import rdstdin
|
|
|
|
|
|
|
|
import ./chess
|
|
|
|
|
|
|
|
proc runGame*(): void =
|
|
|
|
## Initializes and runs a game of chess.
|
|
|
|
var game = initGame()
|
|
|
|
var draw: string
|
|
|
|
game.echoBoard(game.toMove)
|
|
|
|
while not game.isCheckmate(game.toMove) and not game.isStalemate(game.toMove):
|
|
|
|
echo "Make a move"
|
|
|
|
echo game.toMove
|
|
|
|
var move = readLine(stdin)
|
|
|
|
while not game.checkedMove(notationToMove(move, game.toMove)):
|
|
|
|
move = readLine(stdin)
|
|
|
|
game.echoBoard(game.toMove)
|
|
|
|
if (game.isDrawClaimable):
|
|
|
|
echo "Do you want to claim a draw? (y/N)"
|
|
|
|
draw = readLine(stdin)
|
|
|
|
if (draw == "y"):
|
|
|
|
echo "Draw claimed"
|
|
|
|
break
|
|
|
|
if game.isCheckmate(game.toMove):
|
|
|
|
echo $game.toMove & " was checkmated"
|
|
|
|
if game.isStalemate(game.toMove):
|
|
|
|
echo "Stalemate"
|
|
|
|
|
|
|
|
runGame()
|