mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
56 lines
1.2 KiB
Plaintext
56 lines
1.2 KiB
Plaintext
patches-own [
|
|
living? ;; indicates if the cell is living
|
|
live-neighbors ;; counts how many neighboring cells are alive
|
|
]
|
|
|
|
to setup-blank
|
|
clear-all
|
|
ask patches [ cell-death ]
|
|
reset-ticks
|
|
end
|
|
|
|
to setup-random
|
|
clear-all
|
|
ask patches
|
|
[ ifelse random-float 100.0 < initial-density
|
|
[ cell-birth ]
|
|
[ cell-death ] ]
|
|
reset-ticks
|
|
end
|
|
|
|
to cell-birth
|
|
set living? true
|
|
set pcolor fgcolor
|
|
end
|
|
|
|
to cell-death
|
|
set living? false
|
|
set pcolor bgcolor
|
|
end
|
|
|
|
to go
|
|
ask patches
|
|
[ set live-neighbors count neighbors with [living?] ]
|
|
;; Starting a new "ask patches" here ensures that all the patches
|
|
;; finish executing the first ask before any of them start executing
|
|
;; the second ask. This keeps all the patches in synch with each other,
|
|
;; so the births and deaths at each generation all happen in lockstep.
|
|
ask patches
|
|
[ ifelse live-neighbors = 3
|
|
[ cell-birth ]
|
|
[ if live-neighbors != 2
|
|
[ cell-death ] ] ]
|
|
tick
|
|
end
|
|
|
|
to draw-cells
|
|
let erasing? [living?] of patch mouse-xcor mouse-ycor
|
|
while [mouse-down?]
|
|
[ ask patch mouse-xcor mouse-ycor
|
|
[ ifelse erasing?
|
|
[ cell-death ]
|
|
[ cell-birth ] ]
|
|
display ]
|
|
end
|
|
|