SebLague / Chess-Challenge

Create your own tiny chess bot!
https://www.youtube.com/watch?v=Ne40a5LkK6A
MIT License
1.78k stars 1.07k forks source link

PGN parser #494

Open nescitus opened 6 months ago

nescitus commented 6 months ago

I have tried to add a very basic PGN parser. Internal board is updated correctly, but it crashes on trying to execute a move in BoardUI. What am I doing wrong?

public void SetPgn(string pgn) { board.LoadPosition("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); boardUI.UpdatePosition(board); boardUI.ResetSquareColours(); SetBoardPerspective();

        pgn = ExtractMovesFromPGN(pgn);
        pgn.Trim();
        Console.WriteLine(pgn);
        string[] moveList = pgn.Split(' ');

        foreach (string moveString in moveList)
        {
            MoveGenerator moveGenerator = new();
            var moves = moveGenerator.GenerateMoves(board);
            foreach (var move in moves)
            {
                if (moveString.Equals(MoveUtility.GetMoveNameSAN(move, board)))
                {
                    Console.WriteLine(moveString);
                    PlayMove(move); // CRASH
                    board.MakeMove(move); 
                    break;
                }
            }
        }
    }