Advertisement
Guest User

Untitled

a guest
May 19th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.54 KB | None | 0 0
  1. ; Exemple de code pour une �quipe p
  2. ; C'est ce fichier que vous devez remplir
  3. ;
  4. ; BUG
  5. ; Si sur Case Noire des autres côtés, il va en face, et y reste
  6. ;
  7. ;
  8. ;
  9. ;
  10.  
  11.  
  12. globals [
  13. p_team ;tous les agents de mon �quipe
  14. liste_marquage
  15. position_depart
  16. base_occupee
  17. marque
  18. liste_bas
  19. liste_colonne
  20. liste_end
  21. ]
  22.  
  23. ;code du comportement de mon �quipe
  24. to p_run
  25.  
  26.  
  27. ask p_team [
  28.  
  29. ; Initialisation
  30. if ticks = 0 [
  31. ; Liste indiquant au robot qu'il est en bas
  32. set liste_bas n-values 20 [false]
  33. ; Liste indiquant au robot qu'il a fini
  34. set liste_end n-values 20 [false]
  35.  
  36. if color = blue [
  37. ; Liste des positions des robots en colonne
  38. set liste_colonne []
  39. ; -1 pour les 3 premiers. Ces 3 la, iront bloquer les bases adverses
  40. foreach [-1 -1 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16] [
  41. let temp min-pxcor + bordure + ?
  42. set liste_colonne lput temp liste_colonne
  43. ]
  44. ]
  45.  
  46.  
  47. ]
  48.  
  49.  
  50.  
  51.  
  52. ; Si le robot a une boite
  53. ifelse charge [
  54. let l direction_base
  55. ifelse l != false [
  56. ifelse direction_base != [-1 0] [
  57. let px item 0 l
  58. let py item 1 l
  59. deposer_boite px py
  60. ]
  61. [
  62. let d2 targeted xcor (ycor - 1)
  63. if d2 != false [
  64. move_to item 0 d2 item 1 d2
  65. ]
  66. ]
  67. ]
  68. [
  69. to_base
  70. ]
  71. ]
  72. ; Si le robot n'a pas de charge
  73. [
  74. let ind (id)
  75. let val item ind liste_end
  76. ifelse val = true [
  77. ifelse precision xcor 0 != (min-pxcor + id) and precision ycor 0 != (max-pycor - 3) [
  78. let d_end targeted (15 + id) (max-pycor - 3)
  79. if d_end != false [
  80. move_to item 0 d_end item 1 d_end
  81. ]
  82. ]
  83. [
  84.  
  85. ]
  86. ]
  87. [
  88. let i id
  89. ;print i
  90. let v item i liste_colonne
  91. ifelse v = (min-pxcor + bordure - 1) [
  92. if i = 0 [
  93. let b item 1 bases
  94. ifelse precision xcor 0 != item 1 b and precision ycor 0 != item 2 b [
  95. let d_base targeted item 1 b item 2 b
  96. ifelse d_base != false [
  97. move_to item 0 d_base item 1 d_base
  98. ]
  99. [
  100. move_alea
  101. ]
  102. ]
  103. [
  104.  
  105. ]
  106. ]
  107. if i = 1 [
  108. let b item 2 bases
  109. ifelse precision xcor 0 != item 1 b and precision ycor 0 != item 2 b [
  110. let d_base targeted item 1 b item 2 b
  111. ifelse d_base != false [
  112. move_to item 0 d_base item 1 d_base
  113. ]
  114. [
  115. move_alea
  116. ]
  117. ]
  118. [
  119.  
  120. ]
  121. ]
  122. if i = 2 [
  123. let b item 3 bases
  124. ifelse precision xcor 0 != item 1 b and precision ycor 0 != item 2 b [
  125. let d_base targeted item 1 b item 2 b
  126. ifelse d_base != false [
  127. move_to item 0 d_base item 1 d_base
  128. ]
  129. [
  130. move_alea
  131. ]
  132. ]
  133. [
  134.  
  135. ]
  136. ]
  137. ]
  138. [
  139. ; Sil est dans une zone noire
  140. ifelse [pcolor] of patch-here = black [
  141.  
  142.  
  143. ; Si il n'est pas à la position qu'on lui a indiqué
  144. ifelse precision xcor 0 != item (id) liste_colonne and precision ycor 0 != (max-pycor - bordure + 1)[
  145. let d targeted (item (id) liste_colonne) (max-pycor - bordure + 1)
  146. if d != false [
  147. move_to item 0 d item 1 d
  148. ]
  149. ]
  150. ; Sinon il peut retourner dans la zone blanche
  151. [
  152. let d2 targeted xcor (ycor - 1)
  153. if d2 != false [
  154. move_to item 0 d2 item 1 d2
  155. ]
  156. ;set heading position_depart
  157. let index (id)
  158. ; On indique qu'il n'est plus en bas
  159. set liste_bas replace-item index liste_bas false
  160. ]
  161. if precision ycor 0 <= (min-pycor + bordure) and item id liste_bas = false [
  162. let index (id)
  163. set liste_bas replace-item index liste_bas true
  164. let temp item index liste_colonne
  165. let new temp + 20
  166. ifelse new > (max-pxcor - bordure) [
  167. set liste_end replace-item index liste_end true
  168. ]
  169. [
  170. set liste_colonne replace-item index liste_colonne new
  171. ]
  172. ]
  173.  
  174. ]
  175. [
  176. let l accessible_boxes
  177. ifelse not empty? l [
  178. let x item 0 l
  179. let px item 0 x
  180. let py item 1 x
  181. prendre_boite px py
  182. ]
  183. [
  184. ifelse item id liste_bas = true [
  185. let d2 targeted item (id) liste_colonne (max-pycor - bordure + 1)
  186. if d2 != false [
  187. move_to item 0 d2 item 1 d2
  188. ]
  189. ]
  190. [
  191. let d2 targeted xcor (min-pycor + bordure - 1)
  192. ifelse d2 != false [
  193. move_to item 0 d2 item 1 d2
  194. ]
  195. [
  196. let listeDirection direction_free
  197. let dir item 0 listeDirection
  198. let dirX item 0 dir
  199. let dirY item 1 dir
  200. move_to dirX dirY
  201. ]
  202. ]
  203.  
  204. ]
  205. ]
  206. ]
  207. ]
  208. ]
  209. ]
  210.  
  211. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement