Istruzione if
Un’istruzione if assume la forma
if (<espressione>) <istruzione>
oppure
if (<espressione>) <istruzione> else <istruzione>
L’istruzione può essere anche un blocco.
L’espressione verrà valutata.
Se il valore (arrotondato) è <=0 (false) viene eseguita l’istruzione dopo else, altrimenti (true) viene eseguita l’altra.
È una buona abitudine racchiudere sempre tra prentesi graffe l’istruzione dopo l’if.
Quindi è meglio utilizzare
if (<espressione>) { <istruzione> } else { <istruzione> }
Esempio
Il programma seguente muove l’oggetto verso il centro (x=200) dello schermo.
{ if (x<200) { x += 4 } else { x -= 4 }; }
Istruzione repeat
Un’istruzione repeat ha la forma
repeat (<espressione>) <istruzione>
L’istruzione è ripetuta il numero di volte specificato dal valore arrotondato dell’espressione.
Esempio
Il programma seguente crea cinque palle in posizioni casuali.
{ repeat (5) instance_create(random(400), random(400), ball); }
Istruzione while
Un’istruzione while ha la forma
while (<espressione>) <istruzione>
Finché l’espressione è true, l’istruzione (che può essere anche un blocco) viene eseguita.
Presta cura al tuo ciclo while.
Puoi facilmente realizzare un ciclo infinito, nel qual caso il tuo gioco si bloccherà e non reagirà più ad alcun input.
Esempio
Il programma seguente cerca di sistemare l’oggetto corrente in una posizione libera (si tratta della stessa azione di muovere un oggetto in una posizione casuale).
{ while (!place_free(x, y)) { x = random(room_width); y = random(room_height); } }
Costrutto do
Un’istruzione do ha la forma
do <istruzione> until(<espressione>)
L’istruzione (che può essere anche un blocco) viene eseguita finché l’espressione non è vera.
L’istruzione viene eseguita almeno una volta.
Presta cura al tuo ciclo do.
Puoi facilmente realizzare un ciclo infinito, nel qual caso il tuo gioco si bloccherà e non reagirà più ad alcun input.
Esempio
Il programma seguente cerca di sistemare l’oggetto corrente in una posizione libera (si tratta della stessa azione di muovere un oggetto in una posizione casuale).
{ do { x = random(room_width); y = random(room_height); } until (place_free(x, y)) }
Costrutto for
Un’istruzione for ha la forma
for (<istruzione1> ; <espressione> ;<istruzione2>) <istruzione3>
Funziona come segue..
- Prima viene eseguita istruzione1.
- Poi viene valutata l’espressione.
- Se è true, viene eseguita l’istruzione3; poi l’istruzione2 e poi viene valutata di nuovo l’espressione.
- Questo continua finché l’espressione non diventa false.
Sembra abbastanza complicato… interpretalo come segue.
- L’istruzione1 inizializza il ciclo for.
- L’espressione controlla se il ciclo deve terminare o meno.
- istruzione2 è il passo che porta alla prossima valutazione del ciclo.
L’uso più comune è quello di un contatore che percorre un certo intervallo.
Esempio
Il programma seguente inizializza un array di lunghezza 10 con i valori da 1 a 10.
{ for (i=0; i <= 9; i+=1) list[i] = i+1; }
Istruzione switch
In certe situazioni vuoi che le azioni dipendano da un particolare valore.
Puoi farlo utilizzando un certo numero di if ma è più facile utilizzare l’istruzione switch.
Un’istruzione switch ha la forma seguente:
switch (<espressione>) { case <espressione1>: <istruzione1>; ... ; break; case <espressione2>: <istruzione2>; ... ; break; ... default: <istruzione>; ... }
Funziona come segue.
- Prima viene calcolata l’espressione.
- Poi viene confrontata con i valori delle diverse espressioni dopo le istruzioni case.
- L’esecuzione continua dopo la prima istruzione case con il valore corretto finché non si incontra un’istruzione break.
- Se nessuna istruzione case ha il valore giusto, l’esecuzione passa a quella dopo l’istruzione default.
Osserva
- L’istruzione default non è obbligatoria.
- Diverse istruzioni case possono essere previste per la stessa istruzione.
- Anche l’istruzione break non è obbligatoria.
Se non c’è l’istruzione break l’esecuzione continua semplicemente con il codice della prossima istruzione case.
Esempio
Il programma seguente esegue un’azione in funzione del tasto che è stato premuto.
switch (keyboard_key) { case vk_left: case vk_numpad4: x -= 4; break; case vk_right: case vk_numpad6: x += 4; break; }
Istruzione break
L’istruzione break assume la forma
break
È utilizzata nei cicli for while repeat e nelle istruzioni switch with e ne interrompe l’esecuzione.
Se invece è utilizzata fuori da queste istruzioni termina il programma (non il gioco).
Istruzione continue
L’istruzione continue assume la forma
continue
Se utilizzata nei cicli for while repeat e nelle istruzioni switch with fa passare l’elaborazione al prossimo valore (del ciclo o della with.
Istruzione exit
L’istruzione exit assume la forma
exit
Semplicemente termina l’esecuzione dello script o porzione di codice.
Non termina l’esecuzione del gioco… per questo ti serve la funzione game_end().