Marzo 17, 2015, 12:00:43 AM Ultima modificación: Marzo 17, 2015, 12:25:31 AM por king195
Buenas tengo dos dudas, en game maker hay alguna estructura de datos como en C con Typedef struct?

Estaba probando hacer Arrays de 2 dimensiones pero cuando los declaro como variables me da un montón de fallos, por empezar que el primer fallo me lo da nada más declararlo.


var i,j,enemigo,pared,tam=20,total_enemigos=(tam*tam)/12,casillas[tam,tam],aux_desactivada[tam,tam];

do{
    enemigo=0;
    for(i=0;i<tam;i++){
        for(j=0;j<tam;j++){
            pared=0;
            if(j==0 || j==tam-1 || i==0 || i==tam-1){
                casillas[i,j]=2;
                aux_desactivada[i,j]=5;
            }else{
                casillas[i][j]=random()%16;
                if(casillas[i,j]>4){
                    casillas[i,j]=0;
                }
                if(casillas[i,j]==2)
                    aux_desactivada[i,j]=random()%3;

                if(casillas[i,j]==4)
                    enemigo++;
            }
            aux_casillas[i,j]=casillas[i,j];
        }
    }
}while(enemigo!=total_enemigos);


Ya me diréis, no se mucho sobre la sintaxis en GML y me llevo mejor con C.

Cita de: king195 en Marzo 17, 2015, 12:00:43 AM
Buenas tengo dos dudas, en game maker hay alguna estructura de datos como en C con Typedef struct?
No.

Los "arreglos" en GML son similares a las "estructuras" en C, porque pueden almacenar datos de diferentes tipos, pero en GML no es necesario declarar el tamaño del arreglo ni los tipos de datos que va a almacenar, todo se hace automáticamente al asignar un valor (arreglo[i,j]=valor;).

Si ya sabes C, te será muy fácil aprender la sintaxis de GML, sólo tienes que leer esta sección del manual: http://docs.yoyogames.com/source/dadiospice/002_reference/001_gml%20language%20overview/index.html

En tu código los errores son éstos:

En la primera línea aparece ésto
[gml]casillas[tam,tam], aux_desactivada[tam,tam];[/gml]
No se permite declarar el tamaño sin una asignación, éstas son las formas correctas
[gml]
casillas, aux_desactivada;
casillas[tam,tam]=valor ,aux_desactivada[tam,tam]=valor;
[/gml]

Esta expresión [gml]casillas[j]=random()%16;[/gml] se debe escribir así, mira que random lleva un argumento [gml]casillas[i,j]=random(1)%16;[/gml]

Y la palabra do se debe usar con until, no con while.

Cita de: Clamud en Marzo 17, 2015, 03:30:48 AM
Los "arreglos" en GML son similares a las "estructuras" en C, porque pueden almacenar datos de diferentes tipos, pero en GML no es necesario declarar el tamaño del arreglo ni los tipos de datos que va a almacenar, todo se hace automáticamente al asignar un valor (arreglo[i,j]=valor;).

Si ya sabes C, te será muy fácil aprender la sintaxis de GML, sólo tienes que leer esta sección del manual: http://docs.yoyogames.com/source/dadiospice/002_reference/001_gml%20language%20overview/index.html

En tu código los errores son éstos:

En la primera línea aparece ésto
[gml]casillas[tam,tam], aux_desactivada[tam,tam];[/gml]
No se permite declarar el tamaño sin una asignación, éstas son las formas correctas
[gml]
casillas, aux_desactivada;
casillas[tam,tam]=valor ,aux_desactivada[tam,tam]=valor;
[/gml]

Esta expresión [gml]casillas[j]=random()%16;[/gml] se debe escribir así, mira que random lleva un argumento [gml]casillas[i,j]=random(1)%16;[/gml]

Y la palabra do se debe usar con until, no con while.

Gracias  :) Se me hacen raras algunas cosas como no poner que tipo de variable es, pero ya iré acostumbrándome.