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
ask patches
[ if random-float 100 < densita_materiale
[ set pcolor yellow ] ]
[ set pcolor yellow ]]
reset-ticks
;; distribuzione casuale di termiti
@ -24,16 +24,20 @@ end
to go
ask turtles [cerca-cibo appoggia-cibo ]
tick
end
to cerca-cibo
ifelse pcolor = yellow
[set pcolor black set color orange fd rg_inerzia] ;ramo vero
[vaga cerca-cibo] ; ramo falso
; vago finchè non trovo cibo
while [ pcolor = black or not efficient? (true)][
vaga ]
; Finito il while, ho trovato del cibo: lo raccolgo e mi allontano
set pcolor black
set color orange
fd rg_inerzia
end
@ -45,19 +49,53 @@ end
to appoggia-cibo
ifelse pcolor = black
[ set pcolor yellow
set color white
allontanati]
while [ pcolor != black or not efficient?(false)]
[ vaga
appoggia-cibo ]
]
set pcolor yellow
set color white
allontanati
end
to allontanati
rt random 360
fd rg_libera
if pcolor != black
[ allontanati]
let energy 10
while[ pcolor != black and not tired?(energy)]
[ rt random 360
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
@#$#@#$#@
GRAPHICS-WINDOW
@ -81,8 +119,8 @@ GRAPHICS-WINDOW
75
-75
75
0
0
1
1
1
ticks
30.0
@ -111,7 +149,7 @@ BUTTON
62
NIL
Go
NIL
T
1
T
OBSERVER
@ -207,11 +245,48 @@ INPUTBOX
174
122
numero_step
100.0
1000.0
1
0
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?