Game Maker Language: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
RolloBot (discussione | contributi)
m Bot: Correzione di uno o più errori comuni
Riga 36:
È chiaro che prima di accedere a una variabile bisogna almeno una volta fare un'assegnazione (in questo caso detta inizializzazione, intesa come inserimento dei valori iniziali).
 
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]].
====Assegnazione relativa====
Una variabile può anche fare un calcolo su se stessa (a patto di essere già stata inizializzata). Un semplice esempio è dato dal contare: quando un software fa comparire a schermo un conto alla rovescia non fa altro che eseguire (ciclicamente) questo comando:
Riga 117:
Allo stesso modo se una function restituisce un dato significativo la parte "data_out =", sebbene generalmente consigliata, non è obbligatoria.
 
in GML Le function definite (e programmate) dall' utente vengono chiamate anche "script"
 
==If e blocchi di istruzioni==
Riga 233:
Quando si definisce un parent succedono alcune cose:
 
- l'oggetto figlio eredita il codice del parent (a meno che esista un evento di stesso tipo nell' oggetto figlio: in tal caso l'evento del figlio "sovrascriverà" quello del padre *)
 
NB: * in caso si voglia mantenere attivo sia l'evento del padre sia del figlio bisogna usare la function "event_inherited"
 
- se una istanza qualunque esegue un codice sull' oggetto parent (mediante la keyword "with") esso verrà eseguito su tutte le istanze di tutti gli oggetti figli
 
- se una funzione viene incaricata di fare un calcolo relativamente un oggetto parent (per esempio trovare l'istanza più vicina) prenderà, durante il calcolo, in considerazione anche tutti gli oggetti figli (a meno che si mettano deliberatamente dei controlli sulla variabile built-in "object_index").
==Array==
gli array (dall' inglese schieramento) sono paragonabili a degli insiemi di variabili, per esempio:
usando le variabili
<source lang=gml>
Riga 262:
Sebbene i due codici paiono pressoché identici ci sono alcune grosse differenze:
* al posto di un indice è possibile mettere il nome di una variabile
* le operazioni di assegnazione o di testing possono essere eseguite in un ciclo (naturalmente tutte le operazioni possono essere messe in un ciclo ma ciclare gli array ne può giustificarne ulteriormente l' utilizzo)
 
Notare che l' indice di partenza è (automaticamente) lo zero, se al [[programmatore]] sembra più comodo può anche partire da 1 (o anche da un valore qualunque), e comunque bene non partire da indici alti altrimenti ci saranno troppi valori allocati inutilmente.
 
Per rendere un array temporaneo (ovvero per liberare la memoria quando i dati non sono più necessari) bisogna crearlo come "variabile temporanea" (vedi sezione dedicata questa pagina alla sezione "variabili" ).
Riga 273:
num[7] = 10;
</source>
il numero 7 verrà memorizzato alla posizione 8 dell' array "num". È da notare che non è prevista una dichiarazione in cui definire le dimensioni massime dell' array.
 
===array bidimensionali===
Riga 281:
num[11,7] = 13
</source>
il numero 13 verrà memorizzato "a cooridinate" (11,7) dell' array "num"
 
===array tridimensionali===
 
gli array 3D non sono previsti dall' ide di questo linguaggio. È possibile comunque mediante un semplice calcolo matematico trasformare un array 3D in uno 2D. L' array 3D può essere visto come un parallelepipedo formato da tanti parallelepipedi più piccoli: in ognuno di essi c'è memorizzato un dato. Si tratta di "tagliare a fette" il parallelepipedo in tante fette sottili uno, e di metterli tutti adicenti, perdendo così una delle 3 dimensioni (un array che ha una certa "larghezza", "lunghezza", ma spessore 1 ha, in definitiva, 2 sole dimensioni).
===liste e grid (data structure)===
Sono sostanzialmente degli array monodimensionali e bidimensionali.
Riga 297:
NB: anche queste strutture (come gli array "classici") possono essere rimosse dalla [[RAM]] quando i dati non servono più, pero il meccanismo è diverso: gli array classici per essere rimossi devono essere creati come privati di uno script o piece of code (verranno quindi autorimossi alla fine di esso), invece le liste e griglie sono condivise (obbligatoriamente) e possono essere cancellate (in qualsiasi momento) mediante l'apposita funzione nativa.
==nomenclatura degli elementi==
Quando si crea un nuovo progetto vengono creati oggetti, sprite, rooms, suoni ed altre cose (generalmente visibili in un sistema di cartelle posizionato in alto a sinistra dell' ide). A Ognuno di questi elementi il programmatore da un nome significativo.
 
Spesso si usano delle convenzioni che mirano a evitare ambiguità (che nella migliore delle ipotesi aumenta inutilmente il tempo necessario allo svilluppo del progetto).