Hola amigos,
estoy buscando información acerca del uso de listas.
Es cierto que en la ayuda explica algunas de sus funciones, tales como: ds_list_create(), ds_list_destroy(id), pero no me es suficiente como para entenderlo a fondo. Desconozco si existe algún manual que explique estas funciones o si alguno de vosotros las usa y me podría echar una mano.
Saludos y gracias
Jose R. Onís
hola.. una lista se crea para guardar valores que se utilizaran despues..
supon que iras al supermercado y escribes una lista de todo lo que compraras.. digamos que sean 20 cosas, aun asi no compraras exactamente el primer producto que esté en la lista, sin embargo cuando compres uno de la lista ya no volveras a comprarlo...
otro ejemplo es digamos ya en un videojuego:
hay 8 cofres y en solo 3 saldra 500 de oro.. al azar seria añadir a la lista 5 valores con cero oro y tres con oro..
despues la lista se barajea como si cada elemento de la lista fueran cartas.. y asi hay modos aleatorios pero sin repeticion.....
..en si .. hay muchas funciones para las listas ... espero haberme exlplicado ... y si quieres me explico en base a codigos mas especificados
Veo que usas GM8. Sí, existe un manual que explica bien las funciones de listas, y es el manual de GMS, que explica mucho mejor como trabaja cada función y trae un ejemplo de todo (excepto la parte de accesors que es nueva en GMS y no existe en GM8, pero no se necesita para usar listas en GM8).
Mi sugerencia es que consultes el manual de GMS, ya que las funciones de listas son las mismas. Eso a menos que des detalles de qué buscas hacer. En realidad las listas son similares a los arreglos, sólo que para meter un valor, hay que usar una función, para leer un valor, hay que usar una función, pero también tienen sus ventajas, porque hay funciones para borrar elementos de la lista o distribuír al azar la estructura de la lista (cosa que con arreglos no se puede o es más tardado implementar)
Gracias, pero creo que necesitaré algún ejemplo para entenderlo mejor, por ejemplo un bingo.
Su funcionamiento creo que debería ser algo así, cada x tiempo se genera un número aleatorio entre 1 y 90, ninguno de estos números se pueden repetir, por otro lado, una variable actúa de contador para que una vez se hayan creado 90 números no genere ninguno más.
Había pensado incluso en hacerlo con un ficheros .ini a modo de base de datos para almacenar y comparar los números que vayan saliendo pero supongo que las listas son más específicas para este tipo de casos.
No pretendo por supuesto que expliqueis todos los pasos. Solo ese que comentais de incluir los elementos en la lista, barajarlos, y posteriormente mostrarlos sin que se repitan.
Saludos
Desordenar los elementos es una de las funciones más útiles de las listas. Obtener números aleatorios sin repetición es fácil:
[gml]
numeros = ds_list_create(); //crear lista
for( i=1; i<=90; i+=1 ) ds_list_add( numeros, i ); //meter números del 1 al 90
ds_list_shuffle( numeros ); //desordenar
cont = 0; //para contar cuántos números se han sacado
[/gml]
Después, cada vez que necesites obtener un número de la lista, haces esto:
[gml]
if( cont < 90 )
{
numeroaleatorio = ds_list_find_value( numeros, cont );
cont += 1;
}
[/gml]
Muchas gracias, funciona perfecto.
Saludos