Introduzione al GML (Game Maker language)

Introduzione al GML (Game Maker language)

Introduzione al GML (Game Maker language): Strutture e operatori logici. In questa sezione introdurremo il linguaggio e i vari costrutti utilizzati in C, spiegandone l'utilizzo per il GML. Nel corso di questa introduzione cercherò di fare in modo di utilizzare interpretazioni comuni al C e al GML. Il GML è il linguaggio utilizzato dal Game Maker, il noto programma di Overmars, per facilitare un approccio strutturato e disciplinato alla progettazione di un programma, in pratica un'interfaccia che funge da traduttore tra l'utente e la macchina.

Perché utilizzare il GML quando Game Maker utilizza anche funzioni di Drag and Drop? Innanzitutto perché le funzioni di Drag and Drop sono in qualche modo limitate, in secondo piano per ottimizzare la programmazione di un'applicazione.

Inizializzazione variabili Una variabile è una posizione della memoria in cui un valore può essere immagazzinato perché possa essere utilizzato da un programma. Ovviamente per chi conosce già le funzioni del Drag and Drop del Game Maker, si tratta semplicemente di inizializzare una variabile nell'evento Create di un object, ma in questo caso lo si fa semplicemente scrivendolo con un'operazione di assegnamento. Ad esempio se dovessimo inizializzare la variabile var con un valore di 0, basterà semplicemente scrivere nell'evento Create: var = 0; A differenza del linguaggio C, nel GML il carattere ';' può essere in alcuni casi omesso, ma nel corso di questa sezione vi sarà implemento lo stesso, poiché personalmente ritengo che sia di buon uso per una corretta visualizzazione del codice.

Assegnamento e condizione Il linguaggio C, come il linguaggio GML differiscono l'assegnamento dalla condizione. Per l'assegnamento è previsto utilizzare un semplice , per dire ad esempio che in var deve essere assegnato il valore 0 (esempio precedente). Per la condizione viene invece esplicitatala presenza doppia di un carattere, ad esempio il ' per chiedere se una certa variabile var contiene il valore 0: var == 0; Ovviamente la condizione non viene scritta in questo modo, per le tipologie di condizioni si chiariranno in seguito nelle strutture. Questo esempio serve solo a distinguere l'operatore di assegnamento '=' dall'operatore di assegnamento ' .

Segue una tabella con alcuni operatori di uguaglianza e relazionali standard.

Le strutture Normalmente le istruzioni sono eseguite una dopo l'altra nell'ordine in cui sono state scritte. Le strutture consentono al programmatore di specificare l'effettivo ordine di un'istruzione. Ci sono strutture per dare alternative ad alcune azioni, e strutture per eseguire un'istruzione tante volte quanto necessarie, ecc. Una struttura risulterà più adatta in una determinata situazione, o talvolta sarà simile ad un'altra struttura, tutto sta al programmatore scegliere quali tipi di strutture utilizzare a seconda delle sue esigenze. Seguono le interpretazioni nonché le spiegazioni di alcuni tipi di strutture.

Struttura di selezione if Una struttura di selezione viene utilizzata per scegliere tra percorsi di azione alternativi. Per esempio si supponga di dover esaminare se una variabile a ha valore 2, e in tal caso si voglia assegnare un valore 5 alla variabile b: if (a == 2) b = 5; In questo modo nel caso a non sia uguale a 2, l'istruzione b = 5 verrà saltata per passare alle istruzioni successive. Con la struttura di condizione cominciamo a vedere come si distinguono l'assegnamento dalla condizione:
  • if (a == 2): condizione. Richiede se a è uguale 5: assegnamento. Assegna il valore 5 a b Nell'esempio appena considerato, dentro l'istruzione if (a == 2) c'è una sola istruzione b = 5. Se volessimo introdurre più di un'istruzione in una struttura if basterà immettere le istruzioni desiderate tra i caratteri '{' e . Esempio: if (a == 2) { b = 5; c = c + b; } In questo esempio si chiede che, se a è uguale a 2, viene assegnato il valore 5 a b, e viene incrementato c di b (cioè al valore di c viene sommato il valore di b ). Se fossero state omesse le parentesi graffe, l'istruzione c = c + b, sarebbe stata comunque eseguita, invece in questo modo viene eseguita se e solo se a ha valore 2.

Si noti che scrivere scrivere c += b è la stessa cosa. Lo stesso vale per altri operatori. Di seguito la tabella mostra i vari operatori aritmetici di assegnamento. Struttura di selezione If/ Else La struttura di selezione if esegue l'azione (o le azioni) indicata solo quando la condizione è vera; in caso contrario, l'azione è ignorata. La struttura di selezione if/else consente al programmatore di specificare che, nel caso la condizione sia vera, dovrà essere eseguita un'azione differente da quella che si dovrà eseguire qualora la condizione sia falsa. Ad esempio: if (a == 2) { b = 5; c = c + b; } else b = 0; In questo esempio si chiede che, se a è uguale a 2, viene assegnato il valore 5 a b, e viene incrementato c di b, altrimenti se la condizione if (a == 2) è falsa viene assegnato il valore 0 a b.

Anche per else vale lo stesso discorso delle parentesi graffe per incorporare più di un'istruzione.

Struttura di iterazione while Una struttura di iterazione consente al programmatore di specificare che un'azione dovrà essere ripetuta finché alcune condizioni rimarranno vere. In pratica la struttura while presenta un ciclo che termina a seconda di una condizione. Ad esempio: while ( a

case 3: c += 1; break; case 4: d += 1; break; } La parola chiave switch è seguita dal nome della variabile var tra parentesi tonde. Questa è denominata espressione di controllo.

Il valore di questa espressione sarà confrontato con ognuna delle etichette chiamate “case”. Supponiamo che la variabile var abbia assunto un valore casuale da 1 a 4 prima di entrare nello switch e che tale valore sia 3. Questo valore sarà automaticamente confrontato con ogni case dello switch. Nel caso sia stata verificata una corrispondenza (case 3:), saranno eseguite le istruzioni di quel case. Nel caso del valore 3, la variabile c sarà incrementata di 1 e la struttura switch sarà abbandonata immediatamente con l'istruzione break.

L'istruzione break induce il controllo del programma a continuare con la prima istruzione dopo la struttura switch. L'istruzione break è utilizzata poiché altrimenti verrebbero eseguiti insieme tutti i case di una struttura switch. Come avrete ben capito con delle strutture if sequenziali avremmo ottenuto lo stesso risultato, ma la soluzione risulta più ottimizzata in questo modo. Insomma, nel caso di molti if per una stessa variabile o espressione, è consigliato utilizzare una struttura switch.

Gli operatori logici Oltre agli operatori relazionali = ,

Viene verificato solo se nello stesso momento i valori di x e y hanno i valori seguenti.

Condizione OR: Verifica se almeno una delle condizioni è vera. if (x == 5 ( y == 7 ) Viene verificato se almeno uno dei valori tra x o y ha il valore seguente. La condizione viene verificata anche se sono entrambi veri. ➔ Condizione XOR: Verifica solo se una delle condizioni è vera. if (x == 5 ( y == 7 ) viene verificato solo se uno dei valori tra x o y ha il valore seguente. La condizione non è verificata se sono entrambi veri Tutorial by: AgamemnonStokE info: agamemnonstoke@libero.it

Vai alle pagine successive ... Annulla