daily pastebin goal
69%
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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top