turtles-own [
sugar ;; Cantitatea de zahăr pe care o detine o broască țestoasă
metabolism ;; Cantitatea de zahăr pe care fiecare broască țestoasă o pierde la o executie
vision ;; Distanța pe care această broască testoasă o poate vedea în pe orizontala și verticala
vision-points ;; Punctele pe care această broască țestoasă le poate vedea în raport cu poziția sa actuală (bazată pe viziune)
]
patches-own [
psugar ;; Cantitatea de zahăr de pe plasture
max-psugar ;; Cantitatea maximă de zahăr care poate creste pe acest plasture
]
;;
;; Setup Procedures
;;
to setup
clear-all
create-turtles initial-population [ turtle-setup ]
setup-patches
reset-ticks
end
to turtle-setup ;; turtle procedure
;; Broscuta se muta pe un patch liber
set color red
set shape "circle"
move-to one-of patches with [not any? other turtles-here]
set sugar random-in-range 5 25
set metabolism random-in-range 1 4
set vision random-in-range 1 6
set vision-points []
foreach n-values vision [? + 1]
[
set vision-points sentence vision-points (list (list 0 ?) (list ? 0) (list 0 (- ?)) (list (- ?) 0))
]
run visualization
end
to setup-patches
;; in fisier este descrisa capacitatea maxima si minima de zahar pentru patchuri
file-open "sugar-map.txt"
foreach sort patches
[
ask ?
[
set max-psugar file-read
set psugar max-psugar
patch-recolor
]
]
file-close
end
;;
;; Runtime Procedures
;;
to go
if not any? turtles [
stop
]
ask patches [
patch-growback
patch-recolor
]
ask turtles [
turtle-move
turtle-eat
if sugar <= 0
[ die ]
run visualization
]
tick
end
to turtle-move ;; turtle procedure
;; Ia în considerare oportunitatea de mutare pe alte patch-uri neocupate , precum și de a rămâne la actualul patch
let move-candidates (patch-set patch-here (patches at-points vision-points) with [not any? turtles-here])
let possible-winners move-candidates with-max [psugar]
if any? possible-winners [
;; Dacă există astfel de patch-uri, treceți la unul dintre cele mai apropiate patch-uri
move-to min-one-of possible-winners [distance myself]
]
end
to turtle-eat ;; turtle procedure
;; Prin aceasta procedura ii spunem broscutei să metabolizeze zahărul și să mănânce tot ce gaseste pe patch-ul curent
set sugar (sugar - metabolism + psugar)
set psugar 0
end
to patch-recolor ;; patch procedure
;; Culoarea patch-ului se schimba in functie de cantitatea de zahăr pe care o are
set pcolor (yellow + 4.9 - psugar)
end
to patch-growback ;; patch procedure
;; Cerem să crească zahărul la cantitatea maxima suportata, pentru fiecare patch.
set psugar max-psugar
end
;;
;; Utilities
;;
to-report random-in-range [low high]
report low + random (high - low + 1)
end
;;
;; Visualization Procedures
;;
to no-visualization ;; turtle procedure
set color red
end
to color-agents-by-vision ;; turtle procedure
set color red - (vision - 3.5)
end
to color-agents-by-metabolism ;; turtle procedure
set color red + (metabolism - 2.5)
end
; Copyright 2009 Uri Wilensky.
; See Info tab for full copyright and license.