Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: bygdle en Febrero 21, 2016, 10:47:16 PM

Título: ¿Cómo acceder a un array o estructura de datos desde otra estructura de datos?
Publicado por: bygdle en Febrero 21, 2016, 10:47:16 PM
Buenashffjfdkfj!! xD
Me surge esa duda principalmente porque en ocaciones necesito almacenar más de un valor en una llave de una ds_map(), y obviamente la mejor forma de hacerlo es con un array, una ds_list() u otra ds_map().

La pregunta es, si yo tengo un array dentro de una estructura de datos (digámosle ds_map()), con una estructura algo como esto:
(https://gyazo.com/7f622ff2fb5aa5a6f5fae724a6282dff.png)

Había pensado en intentar como un array bidimensional, algo así:
[gml]
mapa[? 'llave1', 0]
[/gml]
Pero me sale error de compilación:
(https://gyazo.com/e8bc5ed9d201feac2dff9352fec4dc27.png)

¿Cómo podría obtener la información que se encuentra en el Array de cada llave del mapa sin tener que almacenar la misma en otra variable?

Gracias de antecabeza :B
Título: Re:¿Cómo acceder a un array o estructura de datos desde otra estructura de datos?
Publicado por: somnus en Febrero 22, 2016, 12:04:02 AM
no te entendi muy bien, pero porque no haces un objeto llave?
- que tenga todo lo necesario y metes en la lista diferentes llaves


ob_llave
-----------
Ev.Create

valor = 1001;
label = "llave nivel 1";



y en otro obeto manager, simplemente creas la lista , haces la istancia de las llaves que ocupas y las almacenas en dicha lsta:

ob_ManejadorLLave
--------------------------------

//creas la lista

llave1 = instance_create(0,0, obLlave);
llave2 = instance_create(0,0, obLlave);
llave3 = instance_create(0,0, obLlave);


llave1.value = 100;
llave2.value = 200;
llave3.value = 300;


//guardas estos objetos en la lista


espero haberme explicado bien






Título: Re:¿Cómo acceder a un array o estructura de datos desde otra estructura de datos?
Publicado por: bygdle en Febrero 22, 2016, 12:09:24 AM
¿Y por qué usar un objeto llave cuando tendo ds_map()?  XD
Verás, no puedo ir creando objetos por cada lista que necesite. Para ello están los ds_map(), que me permiten trabajar de la forma en que lo deseo.

Además, ¿Que tiene que ver lo que mostraste con los arrays?  XD , parece que en realidad no se entendió mi pregunta :-X xD

1)- Tengo una ds_map() creada
2)- En una llave de esa ds_map() tengo guardado un array
3)- Necesito obtener el valor de un índice del array guardado en esa llave de la ds_map()

Eso es, espero haberme explicao mejor xD
Título: Re:¿Cómo acceder a un array o estructura de datos desde otra estructura de datos?
Publicado por: FridaFlowers en Febrero 22, 2016, 12:40:52 AM
Se me ocurre que tienes que obtener primero el arreglo para luego recien hacer referencia al elemento dentro de dicho arreglo, por ejemplo:

var array = arr = ds_map_find_value(mapa1, 2);

draw_text(0,0, arr[1]);


basandome anteriormente de que el mapa está formado de la siguiente manera:

mapa1 = ds_map_create();

array1[0] = "primero";
array1[1] = "segundo";
array1[2] = "tercero";

array2[0] = "cuarto";
array2[1] = "quinto";
array2[2] = "sexto";

ds_map_add(mapa1, 1, array1);
ds_map_add(mapa1, 2, array2);


edit: probando, conseguí, que es lo mismo usar:

var arr = mapa1[? 2];
var val = arr[@ 1];

draw_text(0,0, val);

Título: Re:¿Cómo acceder a un array o estructura de datos desde otra estructura de datos?
Publicado por: bygdle en Febrero 22, 2016, 12:47:09 AM
Eso es lo que quiero hacer, pero a su vez es exactamente lo que quiero evitar XD
Cito lo que dije en mi mensaje original:

Cita de: NiuWeb en Febrero 21, 2016, 10:47:16 PM
¿Cómo podría obtener la información que se encuentra en el Array de cada llave del mapa sin tener que almacenar la misma en otra variable?
Título: Re:¿Cómo acceder a un array o estructura de datos desde otra estructura de datos?
Publicado por: FridaFlowers en Febrero 22, 2016, 02:38:34 AM
Ah, si te refieres a hacerlo con algun tipo de notacion... al menos yo, no he visto nada parecido en el manual.
Título: Re:¿Cómo acceder a un array o estructura de datos desde otra estructura de datos?
Publicado por: Ciberman en Febrero 22, 2016, 08:56:12 AM
No. No existe una forma directa de hacerlo. De todos modos, no es algo malo el tener que almacenarlo en otra variable.
De todos modos, no es algo que vaya a perjudicar la performance del juego, ya que no estas copiando el array entero, solo estás obteniendo un puntero/referencia del array en cuestion. :)