:GMS:

Buenas,

estoy haciendo un jueguecillo que tendrá 4 niveles de dificultad distintos por lo que necesitaré 4 tabla de records distintos con 10 registros cada una ya que me gustaría tener el registro de las 10 mejores puntuaciones por categoría.

Alguien lo ha hecho para que comente cómo o de ideas?

Muchas gracias

Hola empardopo

Nunca lo he hecho antes, pero puedes intentar usar 4 grids de 2x10, así puedes guardar diez registros del par "nombre-puntos". Incluso puedes usar la misma variable para guardar los 4 ID de las grid.
Ejemplo de creación
puntos[0]=ds_grid_create(2,10)
puntos[1]=ds_grid_create(2,10)
puntos[2]=ds_grid_create(2,10)
puntos[3]=ds_grid_create(2,10)


La ventaja de las grid es que las puedes guardar en archivos de texto ini o txt usando "ds_grid_write", así cuando inicias un nuevo juego, puedes cargar la puntuación anterior.
Además puedes sortear las columnas para ordenar los registros por puntos, así muestras los mejores puntajes primero.
Recuerda siempre eliminar las grid después de usarlas.

Saludos

Pensaba tenerlo todo en un único fichero ini en vez de en 4 aunque no sé si sería lo mismo o no; creo que mejor todo en uno solo, no?

Con respecto a ordenar; imagina que la grid puntos[0] contiene las 10 puntuaciones de mi nivel más fácil en el juego; el tema es si tengo los siguientes datos (pongo solo 3 aunque sean 10 finalmente):

EPA,14
APE,10
CRE,18

y los ordeno... Me gustaría ordenarlos con respecto a la puntuación, pero me dejaria el grid ordenado tambien con la correspondiente cadena de texto, es decir,

CRE,18
EPA,14
APE,10

o me devolvería algo así
EPA,18
APE,14
CRE,10

es decir, me deja las iniciales tal cual estuvieran y solo ordena los números?

Thanks!

Hola empardopo

La función "ds_grid_write" convierte la grid en una cadena de texto, tu puedes convertir las 4 en texto y guardarlas en el mismo archivo ini. Después para leerlas, debes usar el "ds_grid_read".

Respecto al orden, no cambia el contenido de la grid, sólo ordena las celdas de manera ascendente o descendente según la columna que le indicas mediante la función "ds_grid_sort".
Si le indicas la columna 0, te ordenará los nombres alfabéticamente (que no es lo que queremos)
Si le indicas la columna 1, te ordenará los puntos, ya sea de forma ascendente o descendente, manteniendo su respectivo nombre al lado obviamente (es tal cual como lo has mencionado en el primer ejemplo que me has mostrado en tu mensaje anterior)

El problema es que para añadir nuevos registros, tienes que hacer un loop hasta encontrar un registro vacío, luego insertar los datos en ese registro y después ordenar la grid de nuevo.
Si recorres las 10 posiciones y no encuentras un espacio vacío, (suponiendo que la grid ya está ordenada por puntos) puedes verificar si la puntuación que ganaste ahora es mayor que la puntuación más baja de la tabla (último registro), si la nueva puntuación es mayor, entonces eliminas el última registro de la tabla, insertas tu nueva puntuación y re-ordenas la tabla.

Saludos