SHARE
TWEET

Untitled

a guest May 19th, 2017 41 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Fichier de définition du modèle
  2. ;Voir le panneau Information po
  3.  
  4. ;;;;;;;;; Section a modifier pour affecter une équipe a un camp ;;;;;;;;;;;;;;;;;;;;;;;
  5.  
  6. ;1) inclure les fichiers des comportements des équipes
  7. __includes [ "primitive.nls" "util.nls" "equipe_p.nls" "equipe_b.nls" "equipe_g.nls" "equipe_d.nls"]
  8.  
  9. ;2) définir les alias de chaque équipe (association equipe X -> camp L ) :
  10. ;  a- dans set_existing_camp, L_exist doit être positionné à true (false si le camp n'est pas utilisé)
  11. ;  b- dans fixe_team, ajout de : set X_team L_robots
  12. to set_existing_camp
  13.   set h_exist true
  14.   set g_exist true
  15.   set d_exist true
  16.   set b_exist true
  17. end
  18. to fixe_team                  
  19.   set p_team h_robots  
  20.   set b_team b_robots
  21.   set g_team g_robots
  22.   set d_team d_robots
  23. end
  24.  
  25. ;3) code de lancement de chaque équipe => ajout X_run , pour chaque équipe X
  26. to run_all_team                
  27.   p_run
  28.   b_run
  29.   g_run
  30.   d_run
  31. end
  32.  
  33. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  34.  
  35. globals [
  36.   nb_robots    ;nbr total de robot par équipe
  37.   nb_boxes     ;nbr total de boite disposé dans l'evironnement
  38.   bordure      ;epaisseur de la bordure
  39.   bases        ;liste de tous les camps [ [color1 x1 y1]  [color2 x2 y2] ...]
  40.  
  41.   ;existances des camps
  42.   h_exist
  43.   b_exist
  44.   g_exist
  45.   d_exist  
  46.  
  47.   ;couleur de chaque camp
  48.   h_color
  49.   b_color
  50.   g_color
  51.   d_color  
  52.  
  53.   ;score de chaque camp
  54.   h_score
  55.   b_score
  56.   g_score
  57.   d_score
  58. ]
  59.  
  60. ;définition des 4 races de robots (une race pour chaque camp)
  61. breed [h_robots h_robot]
  62. breed [b_robots b_robot]
  63. breed [g_robots g_robot]
  64. breed [d_robots d_robot]
  65.  
  66. breed [boxes box]             ;les boites
  67.  
  68. ;chaque robots possède un numéro propre (id), connait la position de sa base (nest_x, nest_y) et peut porter une boite (charge)
  69. h_robots-own [id nest_x nest_y charge]
  70. b_robots-own [id nest_x nest_y charge]
  71. g_robots-own [id nest_x nest_y charge]
  72. d_robots-own [id nest_x nest_y charge]
  73.  
  74.  
  75. to setup
  76.   clear-all
  77.  
  78.   ;initialisation des variables
  79.   set nb_robots 20
  80.   set nb_boxes 600
  81.  
  82.   set_existing_camp   ;définition des camps existants
  83.  
  84.   set h_score 0
  85.   set b_score 0
  86.   set g_score 0
  87.   set d_score 0
  88.  
  89.   set h_color blue
  90.   set b_color green
  91.   set g_color red
  92.   set d_color yellow
  93.  
  94.   set bordure 7
  95.  
  96.   set bases [] ;sera rempli automatiquement par la commande create_camp
  97.    
  98.   ;création de tous les robots
  99.   if h_exist = true [ create_camp h_robots h_color (max-pxcor / 2) max-pycor ] ;camp du haut : blue
  100.   if b_exist = true [ create_camp b_robots b_color (max-pxcor / 2) 0 ]         ;camp du bas : green
  101.   if g_exist = true [ create_camp g_robots g_color 0 (max-pxcor / 2) ]         ;camp de gauche : red
  102.   if d_exist = true [ create_camp d_robots d_color max-pxcor (max-pxcor / 2) ] ;camp de droite : yellow
  103.  
  104.   ;création des boites
  105.   create-boxes nb_boxes [
  106.     set shape "square"
  107.     setxy (random (max-pxcor - 2 * bordure) + bordure) (random (max-pycor - 2 * bordure) + bordure)
  108.     set color pink
  109.   ]
  110.  
  111.   ;création de la bordure
  112.   ask patches [
  113.     if (pxcor >= bordure and pxcor <= (max-pxcor - bordure) and pycor >= bordure and pycor <= max-pycor - bordure)
  114.     [set pcolor white]
  115.   ]
  116.  
  117.   fixe_team    ;fixe les alias de chaque équipe
  118. end
  119.  
  120. ;commande de création des camps
  121. to create_camp [ race c_color b_x b_y]
  122.   let num 0  ;compteur pour numéroter les robots
  123.   let cptxouy (0 - (nb_robots / 2))
  124.  
  125.   ;création de la base
  126.   ask patch b_x b_y [set pcolor c_color]
  127.   set bases lput (list c_color b_x b_y) bases  ;on ajoute les paramêtres de cette base dans la variable globle bases
  128.  
  129.   ;création des robots
  130.   create-turtles nb_robots [
  131.     set breed race
  132.     set id num
  133.     set num (num + 1)
  134.     set nest_x b_x
  135.     set nest_y b_y
  136.     set charge false
  137.     set color c_color
  138.     set shape "empty_turtle"
  139.    
  140.     ;position initiale du robot
  141.     ifelse (c_color = h_color) [
  142.       setxy (nest_x + cptxouy) (nest_y - (bordure / 2))
  143.       set cptxouy (cptxouy + 1)
  144.     ]
  145.     [
  146.       ifelse (c_color = b_color) [
  147.         setxy (nest_x + cptxouy) (nest_y + (bordure / 2))
  148.         set cptxouy (cptxouy + 1)
  149.       ]
  150.       [
  151.         ifelse (c_color = g_color) [
  152.           setxy (nest_x + (bordure / 2)) (nest_y + cptxouy)
  153.           set cptxouy cptxouy + 1
  154.         ]
  155.         [
  156.           if (c_color = d_color) [
  157.             setxy (nest_x - (bordure / 2)) (nest_y + cptxouy)
  158.             set cptxouy cptxouy + 1
  159.           ]
  160.         ]
  161.       ]
  162.     ]
  163.   ]
  164. end
  165.  
  166. ;commande de déclenchement des cycles
  167. to GO
  168.   run_all_team  ;exécute le comportement de chaque équipe
  169.  
  170.   tick
  171. end
RAW Paste Data
Challenge yourself this year...
Learn something new in 2017
Top