Je n'arrive pas à incrémenter le nombre de billes en NetLogo

[Fermé]
Signaler
Messages postés
228
Date d'inscription
vendredi 31 juillet 2015
Statut
Membre
Dernière intervention
24 février 2017
-
Bonjour,
Voici le code :
globals ; declaration de variables global
[
num-billes
; variable declarée
]

turtles-own
[
time-since-last-found ;déclaration de variables locales propres a chaque tortue
nbr_billes
x
y

]

;;;;;;;;;;;;;;;;;;;;;;;;
;;; setup procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;

to setup ;fonction principale du code, il sagit de l'initialisation
; c'est ce qui se passe lorsqu'on appuie sur SETUP


ca ; clear all, on efface toute la grille

set num-billes billes ; on indique qu'on veut un amas de champignons, num-cluster est une variable (noir) 

ask n-of num-billes patches ; on demande d'aller voir 4 cellues 
[
ask n-of 10 patches in-radius 5 ; pour ces quatres cellules on demande de trouver 20 cel dans un rayon de 5
[ 
set pcolor red ; on change la couleur de la cellule en rouge, puisque ce sera un champignion 
]
] 

crt robot ; création de deux tortues
[
set shape "robot"
set size 2 ; on définit la valeur de la variables size a 2
set color green
set time-since-last-found 999 ; on définit la valeur du compteur pour la tortue, le système crée un Compteur # pour chaqu'une des tortues 
]


reset-ticks ; on remet les compteurs à 0
end ; fin 

;;;;;;;;;;;;;;;;;;;;;
;;; go procedures ;;;
;;;;;;;;;;;;;;;;;;;;;

to go ;procédure GO, déclaration

tick ;on incrémente la valeur du ticks

ask turtles 
[search] ;on demanede aux tortues de faire l'action search 

;if all? patches [pcolor = black]
end ; fin

;;;;;;;;;;;;;;;;;;;;;;;;;
;;; search procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;


to search ;on définit l'action effectuer par les robots

   set  nbr_billes 0   
 ifelse time-since-last-found <= 20 ; si le temps depuis la derniere prise est inferieur ou egal a20
  [right (random 181) - 90 ] ; le robot tourne -90 a +90 degres aleatoires
  [right (random 21) - 10 ]; le robot tourne -10 a +10 degres aleatoires
  forward 1; le robot avance 1;
  
  if pcolor = red ; si le robot se trouve sur un bille
  [  
    set pcolor  black 
   set nbr_billes  nbr_billes + 1
     ]
    
    ifelse  nbr_billes = 3
    ;count patches with [pcolor = black]
      [set color red
  setxy x y
  set pcolor blue
  set y y + 1
  ;set nbr_billes nbr_billes + 1
  setxy  x y
  set pcolor blue
  set y y + 1
  ;set  nbr_billes nbr_billes + 1
  setxy x y
  set pcolor blue
  set y y + 2
 ]
  [set x x + 1
    set nbr_billes  nbr_billes = 0 
     set color green]
       
set time-since-last-found time-since-last-found + 1 ;augmenter le compteur de 1

  
end ;fin

Merci