Macchina a stati
Il sistema si trova sempre in uno solo di un numero limitato di stati, e passa da uno all’altro quando si verificano certe condizioni. Ogni stato ha il suo comportamento. Qui la creatura ha tre stati, ognuno con il suo colore:
- calma: resta ferma
- curiosa: si avvicina al mouse
- spaventata: scappa dal mouse
Passare il cursore del mouse sopra il canvas, prima lontano dalla creatura e poi più vicino.
Algoritmo
a ogni fotogramma: draw()
misurare la distanza dal mouse dist()
scegliere lo stato:
se è spaventata da più di 2 secondi, calmarsi millis()
altrimenti, con il mouse a meno di 50 pixel,
spaventarsi e memorizzare il momento millis()
altrimenti, con il mouse a meno di 200, incuriosirsi
altrimenti, calmarsi
muoversi secondo lo stato: if()
calma: restare ferma
curiosa: avvicinarsi al mouse, lentamente lerp()
spaventata: allontanarsi dal mouse, in fretta lerp()
restare nella tela, e disegnarsi del colore dello stato constrain()
Istruzioni
Lo stato di paura si controlla per primo: così dura i suoi due secondi anche se nel frattempo il mouse si allontana.
millis() restituisce i millisecondi passati dall’avvio dello sketch: togliendo il momento in cui è cominciata la paura si ottiene da quanto tempo dura. A differenza di frameCount, non dipende dal numero di fotogrammi al secondo.
Con un valore negativo lerp() va dalla parte opposta: la creatura si allontana dal mouse del 5% della distanza a ogni fotogramma, sempre più in fretta. La curiosità, con 0.02, la avvicina invece del 2%, sempre più piano.
Variazioni
Con questa riga dopo
circle()si legge lo stato accanto alla creatura:
Con
5000al posto di2000la paura dura cinque secondi, e la creatura sembra più timida.