Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Simple Forsyth-Edwards Notation (FEN) for GameMaker | Version 0.1.0
- // CC0 License
- // Example use: my_board = fen_sort("r1bq1rk1/pp3ppp/3n4/2p1N3/2B5/7P/PPP2PP1/R1BQR1K1");
- // Returns an array, white pieces are 1 - 6, black pieces are 7 - 12. 0 = no piece.
- function fen_sort(fen_string) {
- var color_pieces = [0, 6];
- var pieces = { k: 1, p: 2, n: 3, b: 4, r: 5, q: 6 };
- var board = array_create(64, 0);
- var file = 0;
- var rank = 7;
- var squares = 0;
- for (var i = 0; i < string_length(fen_string); i++) {
- var symbol = string_char_at(fen_string, i + 1);
- switch symbol {
- case "-":
- // depends on how you want to code your chess game. empty
- break;
- case "/":
- file = 0;
- rank--;
- break;
- default:
- if (string(string_digits(symbol)) == symbol) {
- file += real(symbol)
- squares += real(symbol);
- } else {
- var c = (string_upper(symbol) == symbol) ? 0 : 1;
- var piece_name = color_pieces[c] + pieces[$string_lower(symbol)];
- board[squares] = piece_name;
- squares++;
- }
- break;
- }
- }
- return board;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement