Alcune celle del mondo sono gialle, ma i tuoi buggle non possono rimanere in
queste celle. Scrivi il codice necessario per muoversi avanti finché il
terreno non diventerà bianco. Per far questo usa il metodo
isGroundWhite()
.
L'inghippo sta nel fatto che molti buggle di questo mondo sono già sopra del terreno giallo ed a loro dispiace molto. Questo è il motivo per cui essi sono nel panico totale e si precipitano in avanti, anche i buggle che all'inizio non si trovano già su una casella gialla. In altre parole, anche se il pavimento è bianco nella prima cella dovete comunque muovervi nella casella successiva.
L'idea generale è qualcosa di simile a questo:
vai avanti fintanto che non sei su una cella bianca
La difficoltà maggiore è che vogliamo che il contenuto del ciclo sia eseguito almeno una volta, anche se ci troviamo già su una cella bianca. Potrebbe essere facile farlo semplicemente copiando il contenuto del ciclo ed incollandolo prima di esso ma questo non sarebbe una bella idea: la duplicazione del codice è veramente una cattiva abitudine e voi dovreste sempre evitarla.
Code duplication easily turns code maintenance into a nightmare: reading the code becomes difficult as the reader must ensure that no slight difference exist between the versions. Debugging the code becomes difficult, as bugs have to be fixed in all versions. Actually, every modification of the code becomes difficult. So, really, you should always strive to not duplicate your code if you can avoid. And the good news is that you always can...
Alcuni linguaggi hanno uno specifico costrutto per questo, ma non il Python. Nessun problema, possiamo farlo da soli! Un buon modo è creare una variabile dedicata ad indicare che stiamo eseguendo il ciclo per la prima volta oppure no, come di seguito:
primaVolta = True while primaVolta or (altre condizioni): primaVolta = False (corpo del ciclo)
Quando primaVolta
è true il contenuto del ciclo viene eseguito
anche se le altre condizioni sono false. Una volta che il contenuto del
ciclo è stato eseguito una volta, la variabile assume il valore false e non
avrà più nessuna influenza sulla decisione di eseguire il corpo del ciclo
oppure no.
In a while loop, the condition is evaluated before anything else, and if it's false, the loop body is never evaluated. Sometimes (although not that often), you would prefer the loop body to get evaluated at least once, even if the condition is initially false. For that, a variation of the while loop gets used, using the following syntax in [!thelang]. [!java|c]Do not forget the semi-column (;) after the condition, it is mandatory.[/!]
do { azione()[!java];[/!] } while (condizione)[!java];[/!][/!]