Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: [Solucionado] DS GRID - Almacenar más de un valor en una celda  (Leído 248 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BssString

Estimados

Mi duda está enfocada en la eficiencia, porque la verdad es que es algo que sí pude hacer...
Quiero almacenar varios valores (un número entre 0 a 4000) en una celda de una DS Grid (quizás 3 o 4 valores en la misma celda).
Ej: que la celda x,y contenga estos 3 valores al mismo tiempo: 300 1 3850

He probado algunas cosas, pero no me convencen mis métodos y quiero saber si alguien lo ha hecho alguna vez de forma eficiente.

Hasta ahora probé 3 cosas:

1- Crear 3 DS Grid diferentes, es el peor método porque es el menos eficiente y en el que más lento se trae la info.

2- Almacenar carácteres binarios, el problema es que sólo acepta un rango de 0 a 255 y quiero almacenar valores de 0 a 4000. Almacenando 2 binarios juntos (y después hacer un cálculo) me causaba errores y bugs raros, sobre todo cuando intentaba leer el cero.

3- Guardar los números como texto, separados por un delimitador. Hasta el momento es el mejor método que he encontrado, es el más eficiente y el que hace más rápido la lectura/escritura de la info para el juego.
El problema es que el código se ve horrible y muchas veces me confundo cuando quiero leer / escribir data en la grid.

Alguna idea?
« última modificación: Octubre 15, 2018, 10:36:39 pm por BssString »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Parzival

Respuesta #1 en: Octubre 13, 2018, 03:04:09 pm
La verdad no utilizo GM desde hace muchísimos años pero lo que se suele hacer en ese caso en lenguajes de programación como C++ o Java, sería almacenar un array.

Cada elemento de la grilla no es un valor, sino un array.

Teoricamente sería algo como:

Citar
var vec[];
vec[0] = 300;
vec[1] = 1;
vec[2] = 3850;


ds_grid(grilla, 0, 0, vec);

Desconozco si esto es posible, pero podrías intentarlo.

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo, BssString


Desconectado 3dgeminis


Desconectado BssString

Respuesta #3 en: Octubre 14, 2018, 06:52:00 pm
Estimados

Probé asignando arrays y me ha funcionado, al menos mientras lo testeaba.
Asigné el mismo array vacío a todas las celdas de la grid y luego podía editar cada array de forma individual.

Más adelante voy a implementarlo en el juego real para ver si afecta o no al rendimiento del juego.

Si falla el rendimiento, lo haré con strings y listo...

Gracias por sus respuestas  ;)

Saludos