static void GameToChessComment(ChessGame game) { ChessGame copy = game.Copy(); copy.UndoAll(); var color = copy.board.IsWhiteTurnBool ? "White" : "Black"; var fen = copy.FEN; Console.WriteLine( "/*\n" + $" * Starting position ({color} to play)"); Console.WriteLine($"{ChessOutput.AsciiBoard(game)}"); while (copy.CanRedo()) { var chessMove = copy.Redo(); var move = chessMove.move; var promotion = ""; if ((Piece)move.promotion != Piece.EMPTY) { promotion = $"(Promote to {PieceParser.ToReadable((Piece)move.promotion)})"; } Console.WriteLine($"{BoardPosition.ReadablePosition(move.fromPosition)} -> {BoardPosition.ReadablePosition(move.targetPosition)} {promotion}"); Console.WriteLine($"{ChessOutput.AsciiBoard(copy)}"); } Console.WriteLine(" */\n" + $"var board = BoardFactory.LoadBoardFromFen(\"{fen}\");\n\n" + $"var moves = board.GetMoves();"); copy.UndoAll(); while (copy.CanRedo()) { var move = copy.Redo().move; var promotion = "EMPTY"; switch ((Piece)move.promotion) { case Piece.QUEEN: promotion = "QUEEN"; break; case Piece.ROOK: promotion = "ROOK"; break; case Piece.BISHOP: promotion = "BISHOP"; break; case Piece.KNIGHT: promotion = "Knight"; break; } ; Console.WriteLine($"board.MakeMove(BoardStateOffset.{BoardPosition.ReadablePosition(move.fromPosition).ToUpper()},BoardStateOffset.{BoardPosition.ReadablePosition(move.targetPosition).ToUpper()}, Piece.{promotion});"); } }