Capitolo 11.4: Domande
Ci sono diverse azioni
che pongono una domanda, ad esempio se una posizione è vuota. Quando la
risposta è sì (true) viene eseguita l’azione successiva, altrimenti viene
saltata. Se vuoi che vengano eseguite o saltate varie azioni a seconda
della risposta puoi metterle in un blocco mettendo le azioni “start block”
e “end block” prima e dopo. Ci può essere anche un ramo “else” che viene
eseguito se la risposta è no. Quindi una domanda appare solitamente in
questo modo:

Qui la domanda che
viene posta è se una posizione è libera da collisioni per l’instance
corrente. Se è così, l’instance inizia a muoversi in una data direzione.
Se non lo è, l’instance salta in una data posizione.
Per tutte le domande c’è un campo
chiamato NOT. Se lo selezioni, il risultato della domanda viene
rovesciato. Cioè, se il risultato era vero diventa falso e se era falso
diventa vero. Ciò ti permette di eseguire delle azioni quando una domanda
non dà risposta affermativa.
Per molte domande puoi
indicare se devono essere applicate a tutte le instance di un determinato
oggetto. In questo caso il risultato è vero solo se è vero per tutte le
instance dell’oggetto. Ad esempio, puoi verificare se per tutte le palle
la posizione immediatamente a destra è libera da collisioni.
Sono disponibili le
seguenti domande e relative azioni. (Nota che hanno tutte un’icona diversa
per poter essere facilmente distinte dalle altre):
If a position is collision free Questa
domanda ritorna true se l’instance corrente, posizionata nella posizione
indicate, non genera collisioni con un oggetto. Puoi specificare la
posizione assoluta o relativa. Puoi anche indicare se devono essere
considerati solo gli oggetti solidi o tutti gli oggetti. Questa azione è
usata tipicamente per verificare se l’instance può spostarsi in una
determinata posizione.
If there is a collision at a position
Questa è l’inversa dell’azione precedente. Ritorna true se c’è una
collisione quando l’instance viene posizionata nella posizione specificata
(nuovamente, con oggetti solidi o con tutti).
If
there is an object at a position Questa
domanda ritorna true se l’instance messa nella posizione indicate incontra
un’instance dell’oggetto indicato.
If the number
of instances is a value
Devi indicare un oggetto e un numero. Se il numero corrente di
instance dell’oggetto è uguale al numero la domanda ritorna true.
Altrimenti ritorna false. Puoi anche indicare che il controllo deve
verificare se il numero di instance è minore o maggiore del valore dato.
Ciò è usato tipicamente per verificare se tutte le instance di un
determinato tipo sono sparite. Questo è spesso il momento per terminare un
livello o un gioco.
If a dice lands on one
Devi specificare il numero di facce del dado. Se poi il lancio del dado dà
uno, il risultato è true e viene eseguita la prossima azione. Ciò può
essere usato per aggiungere un fattore di casualità nel tuo gioco. Ad
esempio, ad ogni passo puoi generare, con una determinata probabilità, una
bomba o un cambiamento di direzione. Maggiore è il numero di facce del
dado, minore è la probabilità. In realtà puoi usare anche numeri decimali.
Ad esempio se imposti il numero di facce a 1.5, la prossima azione sarà
eseguita due volte su tre. Usare un numero minore di 1 non ha senso.
If a sound is
playing Il risultato di questa
domanda è true se il suono indicato è in esecuzione.
If the user
answers yes to a question
Devi specificare una domanda. Verrà mostrata al giocatore una finestra con
un pulsante Sì e un pulsante No. Il risultato è true se il giocatore
risponde Sì. Questa azione non può essere usata in modalità Exclusive; la
risposta in questo caso sarà sempre Sì.
If an
expression is true
Puoi immettere un’espressione. Se l’espressione è valutata come true (cioè
un numero maggiore o uguale a 0.5) viene eseguita l’azione successiva.
Vedi oltre per ulteriori informazioni sulle espressioni.
If a
mouse button is pressed Ritorna
vero se viene premuto il pulsante del mouse indicato. E’ utilizzato
tipicamente nello step event. Puoi verificare se viene premuto un pulsante
del mouse e, se è così, ad esempio spostarti in quella posizione (usa
l’azione jump to a given position con coordinate
mouse_x
e
mouse_y).
If instance is
aligned with the grid
Ritorna true se la posizione dell’instance è allineata ad una griglia.
Devi specificare la spaziatura orizzontale e verticale della griglia. Ciò
è molto utile quando certe azioni, come una rotazione, sono permesse solo
se l’instance è allineata.
If a
variable has a value Ci sono
molte variabili predefinite nel gioco e puoi crearne di tue. Con questa azione
puoi verificare qual è il valore di una particolare variabile. Se il
valore della variabile è uguale al numero la domanda ritorna true.
Altrimenti ritorna false. Puoi anche indicare che il controllo deve
verificare se il valore è maggiore o minore del valore dato. Vedi oltre
per ulteriori informazioni sulle variabili. In realtà, puoi usare questa
condizione anche per confrontare due espressioni.
Else A
questa azione segue
il ramo “else”, che viene eseguito quando il risultato della domanda è
false.
Start of block Indica
l’inizio di un blocco di azioni.
End of block Indica
la fine di un blocco di azioni.
Repeat next action
Questa azione
è usata per ripetere la prossima azione (o blocco di azioni) un certo
numero di volte. Devi semplicemente indicare il numero.
Exit the
current event
Quando viene incontrata questa azione non viene eseguita nessuna ulteriore
azione in questo evento. Ciò viene usato tipicamente dopo una domanda. Ad
esempio, quando una posizione è libera non è necessario fare nulla e
possiamo uscire dall’evento. In questo esempio, le azioni successive
vengono eseguite solo se c’è una collisione.
By Mark Overmars
Capitolo 11.5
|