chess.txt 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. board_edge = loc.new(world, -375, 138, -21);
  2. chessboard = array.new(8,8);
  3. chess_skins_value = map.new();
  4. chess_skins_signature = map.new();
  5. map.add(chess_skins_value, "Pink_King", "ewogICJ0aW1lc3RhbXAiIDogMTY0Nzk2ODkxMDIwMCwKICAicHJvZmlsZUlkIiA6ICI5MThhMDI5NTU5ZGQ0Y2U2YjE2ZjdhNWQ1M2VmYjQxMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJCZWV2ZWxvcGVyIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2NkODczMjY2NWE4YWJhMmY5YzQ3MDU0YzhjODdhZWFiNjQ3YTg3MmVjODA2MmQ3ZmFiYzkxYWJmODZmOWJhYWMiCiAgICB9CiAgfQp9")
  6. map.add(chess_skins_signature, "Pink_King", "JwER1lBG9QcnyAY1blr1tcA4sVUpISQcl9flu0FZyRunPwF4u6Efxo+MctRRUaCrYwp6fC9Sdjm5iVmesVpczyQ2ImyQ2/wIMqpFPQXs080gxc6FAqYiJZmDixunn907NJeBP0WKI04DtpD2a0KB3HPN5MyrORHuDBGcgSDsXYck73HCS5IMKE+LqCnSrp49fM4JJK1fNgLWFWSEHpSzWoRhvTphbBcrEaGo2fUSzAnTNtt9P6sH6PTV+pKarNcysp3Psc0yzIKC1Bs0tFZshpoJ6KN+PyaJJdDEjZ7ax2N+mj53wUuc+HxWkIFF5QpiVOWiZ9QWV3W4iBk+xUpnfuce2yn2sP+crMyWpoyuSBOXFOmRMk17VuQgY1IsIv/bfuxgUSZbW/18IglTfNaApCQlmTbTK4Bo7rJ/+10xKAH7LKWAI5P2ZctZJykE0fwz7QDDFoiNYeL7ZEaNLmqyTvVvhFfOJr5A2qh11DJD1UT8WxifFI2GonPZ193dgbaNlup4bnoDCLrn6ggMlggoW7fhqmsIvkokcYqFyFhhSJOemdTrH87ICHkstv1dvFEY3tyNPCYVEN9XnkKgg4dZqOHvepXumAA8THn0ersp8uZydtNkI0bLpbLOgAh92uGQ4yP3ShbVuruJf554i/tn24C7aqLVENmkWL3Uaet9vTI=")
  7. colourcode = map.new();
  8. map.add(colourcode, "white", "§f")
  9. map.add(colourcode, "black", "§0")
  10. game_figures_reset_list = list.new();
  11. array = array.new();
  12. list.add(game_figures_reset_list, array);
  13. @wait
  14. wait();
  15. goto("wait");
  16. function chess.reset(game_figures_reset_list, active_game_figures_list){
  17. list_iterator = iterator(active_game_figures_list);
  18. while(hasnext(map_iterator)){
  19. entity.remove(next(map_iterator));
  20. }
  21. list_iterator = iterator(game_figures_reset_list);
  22. while(hasnext(list_iterator)){
  23. chess.spawn_piece(next(list_iterator));
  24. }
  25. game_figures_reset_list;
  26. return game_figures_reset_list;
  27. }
  28. function chess.move_piece(piece, to_loc){
  29. from_loc = entity.getLocation(piece);
  30. to_Board_loc_array = chess.getBoardLocation(to_loc);
  31. possible_piece = $chessboard[to_Board_loc_array[0], to_Board_loc_array[1]];
  32. if(chess.isValidMove(possible_piece, piece)){
  33. entity.remove(possible_piece);
  34. }
  35. from_Board_loc_array = chess.getBoardLocation(from_loc);
  36. $chessboard[from_Board_loc_array[0], from_Board_loc_array[1]] = null;
  37. $chessboard[to_Board_loc_array[0], to_Board_loc_array[1]] = piece;
  38. id = human.moveTo(piece, to_loc);
  39. }
  40. function chess.spawn_piece(spawn_array){
  41. temp_human = human.spawn(spawn_array[0], map.get($chess_names, spawn_array[1]));
  42. human.setSkin(temp_human, map.get($chess_skins_value, spawn_array[1]));
  43. }
  44. function chess.isValidMove(possible_piece, piece){
  45. if(possible_piece == null){
  46. return true;
  47. }
  48. if(chess.getTeamOfPiece(possible_piece) == chess.getTeamOfPiece(piece)){
  49. return true;
  50. }
  51. return false;
  52. }
  53. function chess.getTeamOfPiece(piece){
  54. piece_name = string.text(entity.getName(piece));
  55. if(string.contains(map.get($colourcode, "white"))){
  56. return "white";
  57. }elsif(string.contains(map.get($colourcode, "black"))){
  58. return "black";
  59. }
  60. return;
  61. }
  62. function chess.getBoardLocation(from_loc){
  63. Board_loc_array = array.new(2);
  64. Board_loc_array[0] = loc.getX(from_loc) - loc.getX($board_edge);
  65. Board_loc_array[1] = loc.getZ(from_loc) - loc.getZ($board_edge);
  66. return Board_loc_array;
  67. }