Esempio n. 1
0
        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});");
            }
        }