Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. var rand = 10;
  2. getZone(getCell(), rand, COLOR_BLUE);
  3.  
  4. moveToward(getNearestEnemy());
  5.  
  6.  
  7.  
  8.  
  9. /**
  10. *Fonction recursive qui va rechercher les 4 voisins d'une case
  11. *Ou bien les voisins de ses voisins tant que MP > 1
  12. *
  13. *@param zone array qui comprend la case de départ pour la première itération puis
  14. *l'ensemble des cells
  15. *@param MP nombre de points de mouvements
  16. *@param color colore les cells si non null
  17. *@param needLos true pour garde uniquement les cases avec une ligne de vue avec startCell
  18. *
  19. *@return un tab de cells
  20. */
  21. function getZone(zone, MP, color) {
  22.  
  23. //Vérification si c'est la première itération
  24. if (typeOf(zone) != TYPE_ARRAY) {
  25. var startCell = zone;
  26. zone = [];
  27. zone[startCell] = false;
  28. }
  29.  
  30. //Condition Sortie de la boucle
  31. //Si MP ==1 on renvoit juste le tableau avec les 4 cases adjacentes
  32. if (MP == 1) {
  33. var zoneTmpo = [];
  34. //C'est la dernière étape, donc on renvoit juste les voisins de chacune des cases présents dans zone
  35. for (var cell: var value in zone) {
  36. for (var voisin in getNextCells(cell)) {
  37. if (zone[voisin] == null) {
  38. zoneTmpo[voisin] = false;
  39. }
  40. }
  41. }
  42. for (var cell: var value in zoneTmpo) {
  43. zone[cell] = value;
  44. }
  45. var finalZone = [];
  46. for (var cell: var value in zone) {
  47. push(finalZone, cell);
  48. }
  49. if (color != null) {
  50. mark(finalZone, color);
  51. }
  52. return finalZone;
  53. } else {
  54. var zoneTmpo = [];
  55. for (var cell: var value in zone) {
  56. //On ne recherche les voisins que des cases qui n'ont pas encre été testées
  57. if (zone[cell] == false) {
  58. for (var voisin in getNextCells(cell)) {
  59. //Vérification que le voisin trouvé n'est pas déja dans le tableau
  60. if (zone[voisin] == null) {
  61. //on l'insère en l'initialisant a false qui signifie qu'on a pas encore recherché ses voisins'
  62. zoneTmpo[voisin] = false;
  63. }
  64. }
  65. //On passe a vrai ce qui indique qu'on a fini de chercher les voisins de cette case afin de ne pas recommencer plus tard
  66. zone[cell] = true;
  67. }
  68. }
  69. //On transfère tous les voisins trouvés dans le tableau zone originel
  70. for (var cell: var value in zoneTmpo) {
  71. zone[cell] = value;
  72. }
  73.  
  74. //Puis on renvoit ce nouveau tableau a analyser avec 1 PM de moins
  75. return getZone(zone, MP - 1, color);
  76. }
  77. }
  78.  
  79.  
  80. /**
  81. *Fonction recursive qui renvoit les 4 cases voisines d'une case
  82. *
  83. *@param cell cell de départ
  84. *@return un tab de cells
  85. */
  86. function getNextCells(cell) {
  87. var zone = [];
  88. var coordX = getCellX(cell);
  89. var coordY = getCellY(cell);
  90.  
  91. var cell1 = getCellFromXY(coordX + 1, coordY);
  92. if (cell1 != null and!isObstacle(cell1)) {
  93. push(zone, cell1);
  94. }
  95. var cell2 = getCellFromXY(coordX - 1, coordY);
  96. if (cell2 != null and!isObstacle(cell2)) {
  97. push(zone, cell2);
  98. }
  99. var cell3 = getCellFromXY(coordX, coordY - 1);
  100. if (cell3 != null and!isObstacle(cell3)) {
  101. push(zone, cell3);
  102. }
  103. var cell4 = getCellFromXY(coordX, coordY + 1);
  104. if (cell4 != null and!isObstacle(cell4)) {
  105. push(zone, cell4);
  106. }
  107. return zone;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement