Game Maker Language: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
aggiungo nuova sezione: nomenclatura degli elementi |
No2 (discussione | contributi) m Fix link usando Preferenze | Accessori | Altro | Rivelatore di disambigue, WND |
||
Riga 1:
{{tmp|linguaggio di programmazione}}
{{S|linguaggi di programmazione}}
'''Game Maker Language''' ('''GML
È stato creato da [[Mark Overmars]] inizialmente per aiutare a completare il sistema di [[drag and drop]] del suo programma. Da quando [[YoYoGames]] ha acquistato i diritti del programma, il
==Oggetti==
Se si desidera usare il GML è importante capire come funzionano gli oggetti in questo linguaggio.
▲- Come prima cosa il programmatore crea degli oggetti (vuoti)
▲- e gli associa, se vuole, delle [[sprite]] (ovvero degli elementi grafici),
▲- poi li "rimepie" inserendo una programmazione (basata sugli eventi).
Esistono 3 tipi di programmazione: 1) ad icone 2) a codice 3) ibrido (entrambi i precedenti).
Riga 18 ⟶ 15:
- A questo punto, mediante un [[editor grafico]] si inseriscono gli oggetti (ovvero si creano quelle che vengono chiamate "[[istanza di oggetto]]") in un'area denominata stanza.
Da notare che molteplici istanze dello stesso oggetto (se l'oggetto è stato programmato in tal senso) agiranno l'una rispetto all'altra in maniera autonoma. Gli oggetti che non avranno istanze (ovvero che non sono inseriti nella stanza) non funzioneranno (la loro
==Variabili==
La divisione per tipi di dato è piuttosto semplice, esistono solo 2 tipi di [[Variabile (informatica)|variabili]]: numeriche e stringhe (le variabili booleane sono considerate come di tipo numerico: tecnicamente non formano un tipo di dati a parte).
esiste anche una divisione (indifferentemente dal tipo di dati contenuto) in variabili globali, di istanza e temporanee
* '''
* '''
* '''
▲'''- di istanza''': a ogni nome univoco ne possono corrispondere molteplici: una per oggetto (o più precisamente una per istanza di oggetto)
In game maker language esistono anche variabili dette built-in (sono più di 150). A differenza delle normali variabili, in cui nome è logica di funzionamento vengono decisi dal programmatore, queste sono variabili prestabilite dal creatore del linguaggio: è necessario leggere l'utilizzo una per una sul manuale.
▲'''- temporanee''': a ogni nome univoco ne possono corrispondere molteplici: una per script o piece of code (ogni evento può avere uno o più "piece of code") dove è posizionata. Questo tipo di variabili è da considerarsi completamente privato (a differenza di delle variabili di istanza), ovvero uno script o piece of code che generano una variabile temporanea hanno accesso unico a quella variabile (la quale comunque verrà rimossa alla fine del "piece of code" in cui era dichiarata).
▲In game maker language esistono anche variabili dette built-in (sono più di 150). A differenza delle normali variabili, in cui nome è logica di funzionamento vengono decisi dal programmatore, queste sono variabili prestabilite dal creatore del linguaggio: è necessario leggere l'utilizzo una per una sul manuale. Alcune di esse (marchiate nel manuale con un asterisco) sono dette "variabili built-in di sola lettura", da non confondere con le costanti.
===Dichiarazione e assegnazione di dato a una variabile===
In questo linguaggio, in realtà, non esiste una dichiarazione nel quale si definiscono quale tipi di dato si andrà a mettere nelle variabili, semplicemente quando si vuole creare un certo tipo di variabile si effettua direttamente l'inizializzazione. Fanno eccezione le variabili dichiarate con globalvar e var, le quali hanno quindi una dichiarazione (ma anche in questo caso non verrà definito quale tipo di dati si verrà a inserire in esse).
Riga 39 ⟶ 37:
nome_variabile = dato_che_vuoi;
</source>
E' chiaro che prima di accedere a una variabile bisogna almeno una volta fare un' assegnazione (in questo caso detta
Da notare che "dato_che_vuoi" oltre che essere un semplice dato, può anche essere espressione che coinvolge sia variabili, sia valori (stringhe, numeri o booleni), sia function o script, il tutto combinato insieme mediante operatori (matematici, di stringa e booleani) a seconda di ciò che si vuole fare. NB: l' ordine di computazione della espressione e da sinistra a destra, per cambiare tale ordine si possono usare delle [[parentesi tonde]].
Riga 54 ⟶ 52:
Le assegnazioni alle built-in avvengono come qualunque assegnazione, l'unica differenza (per quanto riguarda le assegnazioni) e che esse hanno già un' inizializzazione.
==Eventi==
il GML è un linguaggio basato sugli
Ecco alcuni eventi a disposizione del programmatore:
Riga 60 ⟶ 58:
* '''create_ev'''
il
* '''step_ev'''
Riga 115 ⟶ 113:
</source>
==Function==
le [[Funzione (informatica)|function]] hanno questa sintassi
<source lang=gml>
data_out = funct_name(data_in1, data_in2, data_in3 ecc.)
Riga 183 ⟶ 181:
'''>'''
'''<'''
:* '''operatori che prendono in ingresso valori booleani
'''&&'''
[[Algebra_di_Boole#AND|and]]. Se 2 o più espressioni booleane sono unite da dei &&, il risultato dell'
'''||'''
[[Algebra_di_Boole#OR|or]]. Se 2 o più espressioni booleane sono unite da dei ||, il risultato dell' espressione finale sarà true solo se il risultato di almeno una delle sottoespressioni è true.
'''^^'''
[[Algebra_di_Boole#XOR|xor]]. Se 2 o più espressioni che booleane sono unite da dei ^^, il risultato dell' espressione finale sarà true solo se il risultato di una sola delle sottoespressioni è true.
''' ! '''
[[Algebra_di_Boole#NOT|not]]. Inverte un'espressione passandola a false (se era true) oppure a true (se era false). Notare che due not consecutivi si annullano, ovvero le espressioni "!(!(true))" è "(true)" sono equivalenti.
'''note:'''
Riga 218 ⟶ 216:
==Eliminare ridondanza non necessaria==
la
===script===
definizione secondo il manuale di game maker:
Riga 233 ⟶ 231:
E' da notare che i valori restituiti non possono essere più di 1 per chiamata.
===parentela tra oggetti===
in GML la '''parentela tra oggetti''' è un modo per ridurre la
Per ogni oggetto si può definire un oggetto parent (=padre). NB: non è detto che a oggetto diverso corrisponda oggetto parent diverso.
|