import board as chess import std/strformat import std/strutils when isMainModule: setControlCHook(proc () {.noconv.} = echo ""; quit(0)) var board = newChessboardFromFEN("rnbqkbnr/8/8/8/8/8/8/RNBQKBNR w KQkq - 0 1") data: string move: Move while true: echo &"{board.pretty()}" echo &"Turn: {board.getActiveColor()}" if board.inCheck(): echo &"Check!" stdout.write("Move (from, to) -> ") 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"