Un progetto di Scratch trovare il percorso più veloce quando ci si muove in spazi con velocità differente come quando si passa dalla terra all'acqua.
Con riferimento alla figura, si fa prima ad andare diritto sull'obiettivo verde o passando per il punto rosso?
Il robot anfibio per intervenire deve dirigersi verso un obiettivo e per questo deve essere usato il suo RADAR.
Karel-bot è uno sprite e come tale è dotato di una specie di RADAR che gli permette di individuare la direzione e la distanza di un oggetto purché rappresentato da un altro sprite.
(Nota. Questo RADAR permette anche di raggiungere (istantaneamente) la posizione dell'altro oggetto ma in questo esperimento non serve)
Questa funzione viene utilizzata in questo gioco: si tratta di fare percorrere al robot un tratto su terra o spiaggia e poi un tratto nel mare.
Per fare questo ci vogliono un robot anfibio ed uno sprite "obiettivo" da raggiungere più un ulteriore sprite per segnare il punto di ingresso nell'acqua.
Il gioco ci permette di scoprire se è meglio andare diritti all'obiettivo o entrare in acqua quando si è un po' più vicini al bersaglio.
Avere un robot anfibio non è un problema con Scratch.
Il problema di tutti i robot anfibi riguarda piuttosto il fatto che la velocità in acqua è molto ridotta rispetto alla velocità sulla terra.
Per andare dalla posizione iniziale alla posizione finale, quella dell'obiettivo, si possono scegliere diversi percorsi composti da un tratto sulla terra ed un tratto nel mare.
Non è detto che la linea retta che congiunge il robot con l'obiettivo sia la via più rapida da percorrere (mentre è certo la più corta).
Il progetto "karel-bot anfibio" consente di studiare la situazione provando diversi percorsi.
Una volta attivato con la bandierina verde, tutto è pronto e con [tasto A] si avvia la marcia del robot.
Si vede che il robot prima marcia sulla terra verso il punto di ingresso nell'acqua e poi si gira per dirigersi verso l'obiettivo avanzando però più lentamente.
Un conta-tempo misura la durata della traversata e consente di scoprire che spostando a destra o a sinistra il punto di ingresso nell'acqua la durata del percorso non è sempre la stessa.
Si pone il problema di cercare il percorso che permette di raggiungere il bersaglio nel minor tempo possibile spostando il punto intermedio:
con i tasti [freccia Sx] e [freccia Dx] per spostarlo di un passo e
con i [freccia su] e [freccia giù] per spostarlo di 20 passi alla volta.
Con [tasto A] si avvia la marcia del robot.
Con [tasto D] si ha la disposizione di default.
Con [tasto N] si imposta una nuova disposizione.
Con [tasto R] si riprova l'ultima impostazione.
Con [tasto V] si modifica il rapporto di riduzione della velocità in acqua ripsetto alla terra.
Con [tasto T] si attiva la via più breve (la linea che congiunge direttamente il robot all'obiettivo).
[tasto M] o [tasto H] per mostrare o nascondere le variabili.
Questo è il problema del bagnino che deve soccorrere un bagnante: non va diritto ma corre sulla piaggia lungo la battigia prima di tuffarsi in acqua in un punto quasi sulla perpendicolare alla linea di battigia passante per l'obiettivo .
Gianni Mastropaolo
Osservazioni
Lo sfondo è fisso con la spiaggia di sotto ed il mare di sopra. La linea di battigia si trova all'ordinata y=0, questo per semplificare il codice.
La precisione del cronometro dipende dal passo di calcolo ∆t impostato nel codice; per una maggiore precisione nel trovare il punto ideale di inserimento in acqua occorre cambiare il valore di ∆t nello sprite "robot" portandolo a valori più bassi rallentando di conseguenza il movimento; in tal caso potrebbe rendersi utile usare la modalità turbo.
Attenzione: il tempo non è misurato con un cronometro in quanto il tempo da misurare è un tempo simulato.
Il tempo misurato nel progetto e il conteggio del numero delle volte che viene effettuato un ciclo di calcolo moltioplicato il ∆t usato per ciascun ciclo
(Nota. Non c'è niente di strano. La misura del tempo è sempre un conteggio di cicli compiuti da qualche cosa che si ripete).
Il RADAR di Scratch è un po' strano.
Un RADAR vero restituisce la posizione e la distanza della superficie che riflette l'onda radio, questo pseudo- RADAR restituisce direzione e posizione del centro del costume dello sprite interrogato rispetto al proprio centro del costume.
Link al file Scratch Karel-bot anfibio https://scratch.mit.edu/projects/433140373/