L'obbiettivo di questa serie di esercizi è quello di far attraversare al buggle il suo mondo. Esso dovrà numerare le celle dove camminerà in modo tale che venga mostrato l'ordine di attraversamento.
Il ciclo principale del tuo codice dovrà essere qualcosa come:
mentre non siamo nella posizione finale vai avanti alla prossima posizione contrassegna la cella con il suo numero
Diversamente dagli esercizi svolti in precedenza, non userememo metodi
simili a forward()
, backward()
, Invece calcoleremo
le coordinate della posizione seguente del buggle usando il metodo
setPos(x, y)
per teleportare il buggle direttamente a
quella posizione. Per esempio setPos(3, 5)
teleporterà il
buggle alla cella con le coordinate x=3 e y=5.
Il tuo primo compito è quello di scrivere una funzione booleana che indica
se il buggle ha raggiunto la posizione finale oppure no, e cioé se si trova
all'angolo in basso a destra. Per fare questo puoi utilizzare
getWorldWidth()
e getWorldHeight()
che ritornano
rispettivamente la larghezza e l'altezza del mondo. Il controllo da fare
sarà quello di confrontare l'attuale posizione del bug (cui puoi accedere
con getX()
e getY()
) con la dimensione del mondo.
Fai attenzione, la prima linea e la prima colonna sono numerate con 0 e non
con 1.
A questo punto dovrai scrivere il codice per raggiungere la prossima posizione. In questo esercizio dovrai attraversare il mondo colonna per colonna. Quindi se siete alla fine di una colonna dovrete spostarvi all'inizio della successiva ed in seguito scendere nelle celle sottostanti.
Dopodiché potrete eseguire il programma per controllare se il buggle ha attraversato il mondo nell'ordine corretto e se si ferma al momento opportuno. Usa li pulsante stop se il buggle non si ferma quando deve.
It is now time to write down the cell numbers. For that, you will need a
counter initialiser to zero at the beginning of your code, and incremented
by one at each step (for example with counter += 1;
). Then,
you have to use writeMessage()
to write the value on the
ground.
You probably need to write the first [!java|scala|c]or last [/!]value out of
the main loop [!java|scala|c], depending on whether you prefer to use a
while
or a do/while
one[/!].
È il tuo turno...