About
Documenti
Game
Staff
Contact




Saint Saga
VGMaker Italia
Game Maker Resorces
TMW Team
Fantasy Community
Rmk2 World Making
Asgard Project
Mugeneration
DragonMugen

 

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