D. Olivier
Damien.Olivier@gmail.com
;; Informations contenues dans chaque patches
patches-own [
vivante? ;; cellule en vie
nbVoisins ;; nbre de cellule voisine en vie
]
;; Trois variables globales pour la couleur du fond
;; et d'une cellule en vie et la densité initiale
globals[couleurFond couleurVie densité]
;; Chaque patch à 30% de chance de contenir une cellule en vie
to setup
ca
set couleurFond black
set couleurVie blue
set densité 30
ask patches [
ifelse random-float 100 < densité
[naissanceCellule]
[mortCellule]
]
end
to go
;; On demande à chaque patches le nombre de voisins en vie
ask patches [
set nbVoisins count neighbors with [vivante?]
]
ask patches [ ;; En fct du nbre de voisins
ifelse nbVoisins = 3
[ naissanceCellule ] ;; Naissance
[if nbVoisins != 2
[ mortCellule ]] ;; Mort
]
end
to naissanceCellule
set vivante? true
set pcolor couleurVie
end
to mortCellule
set vivante? false
set pcolor couleurFond
end
slider pour fixer la densité initiale ;choosers pour choisir les couleurs du fond et des patches en vie ;Les variables globales que nous avons déclarées fontionnent-elles toujours ?
ifelse vivante?
[set pcolor couleurVie]
[set pcolor couleurFond]
Constatez vous un problème ?
monitor qui affiche la densité de cellule en vie :
100 * count patches with [vivante?] / count patches
plot) qui trace l'évolution du nombre de cellules.
plot count patches with [vivante?]
reset-ticks, setup-plots, tick, update-plots)to setup
ca
set couleurFond black
set couleurVie blue
ask patches [
ifelse random-float 100 < Densité
[naissanceCellule]
[mortCellule]
]
reset-ticks ;; Initialise l'horloge initialise les courbes
end
to go
;; On demande à chaque patches le nombre de voisins en vie
ask patches [
set nbVoisins count neighbors with [vivante?]
]
ask patches [
ifelse nbVoisins = 3
[ naissanceCellule ]
[if nbVoisins != 2
[ mortCellule ]]
]
tick ;; On avance l'horloge maj des courbes
end
mouse-down?
to ajouteCellules
if mouse-down? [
ask patch mouse-xcor mouse-ycor [naissanceCellule]
display
]
end
to tueCellules
if mouse-down? [
ask patch mouse-xcor mouse-ycor [mortCellule]
display
]
end
to readFile
let filename user-file
ifelse (filename != false) [
file-open filename
while [not file-at-end?][
;; Une ligne coordonnées d une cellule en vie
let in1 file-read
let in2 file-read
ask patch in1 in2 [naissanceCellule]
]
]
[ user-message "Fichier non chargé"]
file-close
reset-ticks
end