Julio 05, 2020, 05:20:13 PM Ultima modificación: Julio 23, 2020, 08:22:37 PM por GM Sigma
Hace poco empecé a incursionarme en Game Maker,  y acabo de terminar de leer la documentación. Una de las cosas que no pude comprender muy bien fue la Estructura de Datos Map (DS_Map).

¿Para qué sirve este tipo de dato? ¿Pudieran darme de algún ejemplo de uso en algún juego que hayan hecho o conozcan que lo haya usado? Saludos.

#1 Julio 05, 2020, 05:35:04 PM Ultima modificación: Julio 05, 2020, 06:05:53 PM por T789
Yo hace menos de 3 semanas que acabo de empezar a usar Estructuras de Datos y lo que mas me llamo la atencion fueron los Ds_maps

Si conoces los ficheros .ini, supongo ya te podrias hacer una idea mas clara, los mapas son como los inis, primero creas el mapa usando
[gml]
mapa = ds_map_create()
[/gml]
Luego le das un valor en la llave que quieras guardarlo, que puede ser numerica o de cadena, sugiero empieces usando llaves de cadena para adaptarte
[gml]
ds_map_add(mapa, "monedas", 100)
[/gml]
El valor en una seccion del mapa puede ser tanto una string como un valor real, incluso puedes usar una variable y almacenar ese valor en las distintas secciones de un mapa, un ejemplo seria
[gml]
ds_map_add(mapa, "puntos", score);
[/gml]
Usar la misma variable de score funciona, puede que no lo captes al principio pero con un mapa puedes almacenar distintos valores en una misma variable(mapa) usando las llaves como los espacios en los que quieres almacenar los valores

Existen muchas funciones utiles para manejar y trabajar con los mapas, algunas de ellas pueden ser realmente utiles, por ejemplo
[gml]
/// Funciones para el manejo de los mapas
ds_map_replace(mapa, "puntos", score/2) // Esta Remplaza el valor de una seccion, pues con la otra funcion solo añades y puede que no quieras sumarle en concreto
ds_map_find_value(mapa, "pociones") // Esta funcion te ayuda para saber el valor de una seccion(llave) en el mapa
ds_map_delete(mapa, "valores") // Esta funcion es para borrar la llave y su valor del mapa, por si quieres liberar algo de espacio
ds_map_clear(mapa) // Esta en vez de borrar una seccion, solo vacia el mapa entero sin borrarlo
ds_map_destroy(mapa) // Esta si borra el mapa completo, por si no quieres que el mapa perdure al destruir el objeto
[/gml]

Una mejor explicacion te la puede dar esta pagina:
https://www.aprendegamemaker.com/mapas/

Cita de: T789 en Julio 05, 2020, 05:35:04 PM
Yo hace menos de 3 semanas que acabo de empezar a usar Estructuras de Datos y lo que mas me llamo la atencion fueron los Ds_maps

Si conoces los ficheros .ini, supongo ya te podrias hacer una idea mas clara, los mapas son como los inis, primero creas el mapa usando
[gml]
mapa = ds_map_create()
[/gml]
Luego le das un valor en la llave que quieras guardarlo, que puede ser numerica o de cadena, sugiero empieces usando llaves de cadena para adaptarte
[gml]
ds_map_add(mapa, "monedas", 100)
[/gml]
El valor en una seccion del mapa puede ser tanto una string como un valor real, incluso puedes usar una variable y almacenar ese valor en las distintas secciones de un mapa, un ejemplo seria
[gml]
ds_map_add(mapa, "puntos", score);
[/gml]
Usar la misma variable de score funciona, puede que no lo captes al principio pero con un mapa puedes almacenar distintos valores en una misma variable(mapa) usando las llaves como los espacios en los que quieres almacenar los valores

Existen muchas funciones utiles para manejar y trabajar con los mapas, algunas de ellas pueden ser realmente utiles, por ejemplo
[gml]
/// Funciones para el manejo de los mapas
ds_map_find_value(mapa, "pociones") // Esta funcion te ayuda para saber el valor de una seccion(llave) en el mapa
ds_map_delete(mapa, "valores") // Esta funcion es para borrar la llave y su valor del mapa, por si quieres liberar algo de espacio
ds_map_clear(map) // Esta en vez de borrar una seccion, solo vacia el mapa entero sin borrarlo
[/gml]

Una mejor explicacion te la puede dar esta pagina:
https://www.aprendegamemaker.com/mapas/

Acabo de revisar la web y noto que hay mucha información de intereés. Ya comprendo un poco mejor el uso de esta estructura de datos. Por suerte la documentación es bastante buena. Muchas gracias.