import board as chess import std/strformat import std/strutils when isMainModule: setControlCHook(proc () {.noconv.} = echo ""; quit(0)) var board = newChessboardFromFEN("rnbqkbnr/2p/8/8/8/8/P7/RNBQKBNR w KQkq - 0 1") data: string move: Move while true: echo &"{board.pretty()}" echo &"Turn: {board.getActiveColor()}" stdout.write(&"En passant target: ") if board.getEnPassantTarget() != emptyLocation(): echo board.getEnPassantTarget() else: echo "None" stdout.write(&"Check: ") if board.inCheck(): echo &"Yes" else: echo "No" stdout.write("\nMove -> ") try: data = readLine(stdin).strip(chars={'\0', ' '}) except IOError: echo "" break if data == "undo": echo &"Undo: {board.undoLastMove()}" continue if len(data) != 4: continue try: move = board.makeMove(data[0..1], data[2..3]) except ValueError: echo &"Error: {getCurrentExceptionMsg()}" if move == emptyMove(): echo &"Error: move is illegal"