SHARE
TWEET

Untitled

a guest May 19th, 2017 42 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
Top