Advertisement
Makorie

Simple Forsyth-Edwards Notation (FEN) for GameMaker 0.1.0

Jan 30th, 2023 (edited)
656
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Game Maker 1.10 KB | Software | 0 0
  1. // Simple Forsyth-Edwards Notation (FEN) for GameMaker | Version 0.1.0
  2. // CC0 License
  3.  
  4. // Example use: my_board = fen_sort("r1bq1rk1/pp3ppp/3n4/2p1N3/2B5/7P/PPP2PP1/R1BQR1K1");
  5. // Returns an array, white pieces are 1 - 6, black pieces are 7 - 12. 0 = no piece.
  6.  
  7. function fen_sort(fen_string) {
  8.  
  9.     var color_pieces = [0, 6];
  10.     var pieces = { k: 1, p: 2, n: 3, b: 4, r: 5, q: 6 };
  11.     var board = array_create(64, 0);
  12.    
  13.     var file = 0;
  14.     var rank = 7;
  15.     var squares = 0;
  16.  
  17.     for (var i = 0; i < string_length(fen_string); i++) {
  18.        
  19.         var symbol = string_char_at(fen_string, i + 1);
  20.        
  21.         switch symbol {
  22.             case "-":
  23.                 // depends on how you want to code your chess game. empty
  24.                 break;
  25.             case "/":
  26.                 file = 0;
  27.                 rank--;
  28.                 break;
  29.             default:
  30.                 if (string(string_digits(symbol)) == symbol) {
  31.                     file += real(symbol)
  32.                     squares += real(symbol);
  33.                 } else {
  34.                     var c = (string_upper(symbol) == symbol) ? 0 : 1;
  35.                     var piece_name = color_pieces[c] + pieces[$string_lower(symbol)];
  36.                     board[squares] = piece_name;
  37.                     squares++;
  38.                 }
  39.                 break;
  40.         }
  41.    
  42.     }
  43.  
  44.     return board;
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement