1
Fork 0
mirror of https://github.com/Steffo99/turtle007.git synced 2024-11-22 04:54:19 +00:00

Importa progetto dal vecchio repository

This commit is contained in:
Cookie 2020-05-05 17:01:40 +02:00 committed by Stefano Pigozzi
parent c20fd2cc85
commit 7bf70dc85e

View file

@ -7,7 +7,7 @@ to setup
;; distribuzione casuale di cibo ;; distribuzione casuale di cibo
ask patches ask patches
[ if random-float 100 < densita_materiale [ if random-float 100 < densita_materiale
[ set pcolor yellow ] ] [ set pcolor yellow ]]
reset-ticks reset-ticks
;; distribuzione casuale di termiti ;; distribuzione casuale di termiti
@ -24,16 +24,20 @@ end
to go to go
ask turtles [cerca-cibo appoggia-cibo ] ask turtles [cerca-cibo appoggia-cibo ]
tick tick
end end
to cerca-cibo to cerca-cibo
ifelse pcolor = yellow ; vago finchè non trovo cibo
[set pcolor black set color orange fd rg_inerzia] ;ramo vero while [ pcolor = black or not efficient? (true)][
[vaga cerca-cibo] ; ramo falso vaga ]
; Finito il while, ho trovato del cibo: lo raccolgo e mi allontano
set pcolor black
set color orange
fd rg_inerzia
end end
@ -45,19 +49,53 @@ end
to appoggia-cibo to appoggia-cibo
ifelse pcolor = black while [ pcolor != black or not efficient?(false)]
[ set pcolor yellow
set color white
allontanati]
[ vaga [ vaga
appoggia-cibo ] ]
set pcolor yellow
set color white
allontanati
end end
to allontanati to allontanati
rt random 360 let energy 10
fd rg_libera while[ pcolor != black and not tired?(energy)]
if pcolor != black [ rt random 360
[ allontanati] fd rg_libera
set energy energy - (EnergyLostPerAction / 10)
set color energy
]
end
to-report efficient? [needEmptyArea]
; Boolean che dice se è efficiente eseguire l'azione che la evoca
; needEmptyArea è un bool che mi definisce l'obiettivo tra:
; - cercare una zona semi-vuota da cui prelevate cibo (true)
; - cercare una zona semi-piena in cui appoggiare il cibo (false)
;se non ho attivato la modalità efficiente, il bool è sempre soddisfatto
if not efficiency [report true]
;altrimenti, entra in gioco il needEmptyArea
ifelse needEmptyArea
[ ;è considerata "vuota" un'area in cui ci sia meno del 40% di caselle con del cibo
report (count patches in-radius 2 with [pcolor != black] /
count patches in-radius 2 < 0.4)
]
[ ;è considerata "piena" un'area in cui ci sia più del 40% di caselle con del cibo
report (count patches in-radius 2 with [pcolor != black] /
count patches in-radius 2 > 0.4)
]
end
to-report tired? [energy]
; Boolean che monitora l'energia rimasta alla termite
; se non ho attivato la modalità tiredness, la formica avrà sempre energia sufficiente
; altrimenti, controllo se l'energia rimasta è sufficiente
ifelse not tiredness [report false][report (energy < random-float 10)]
end end
@#$#@#$#@ @#$#@#$#@
GRAPHICS-WINDOW GRAPHICS-WINDOW
@ -81,8 +119,8 @@ GRAPHICS-WINDOW
75 75
-75 -75
75 75
0 1
0 1
1 1
ticks ticks
30.0 30.0
@ -111,7 +149,7 @@ BUTTON
62 62
NIL NIL
Go Go
NIL T
1 1
T T
OBSERVER OBSERVER
@ -207,11 +245,48 @@ INPUTBOX
174 174
122 122
numero_step numero_step
100.0 1000.0
1 1
0 0
Number Number
SWITCH
13
357
195
390
Efficiency
Efficiency
1
1
-1000
SWITCH
13
391
196
424
Tiredness
Tiredness
0
1
-1000
SLIDER
13
424
196
457
EnergyLostPerAction
EnergyLostPerAction
1
100
20.0
1
1
%
HORIZONTAL
@#$#@#$#@ @#$#@#$#@
## WHAT IS IT? ## WHAT IS IT?