Mayo 30, 2011, 02:07:59 PM Ultima modificación: Mayo 30, 2011, 08:16:02 PM por kaliman777
Hola:

El t?tulo dice todo. Tengo 90 bolas de mi juego de bingo y deben salir 30 con presionar un bot?n. ?C?mo las saco, sin repetir ninguna?

Cada bola que salga se crear? en la posici?n 16,135 y luego recorren un path, eso ya est? arreglado. Solo me falta el sacar 30 diferentes en cada tirada. Cabe destacar que estoy usando un time line para que salgan cada bola cada 20 step.

Hasta ahora hice que un time line me tire las 30 bolas, seleccionando al azar una de cada cinco posibles cada 20 steps, pero eso me da que siempre salga una del 1 al 5, luego viene otra del 6 al 10 y as?, algo il?gico, me las tira en orden, y la verdad deber?a salir en cualquier orden de tama?o. Hasta la n?mero 90 de primero de ser posible.

Gracias.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

La mejor forma que se me ocurre es con una lista de prioridad.

Primero cre?s la lista y le agreg?s todos los valores.
Si ten?s un objeto para cada bola, la cosa se vuelve un tanto tediosa:
[gml]list = ds_priority_create();
ds_priority_add(list, 0, objBall0);
ds_priority_add(list, 1, objBall1);
...
ds_priority_add(list, 89, objBall89);[/gml]

Si ten?s uno solo, pod?s hacer as?:
[gml]list = ds_priority_create();
for (i = 0; i < 90; i += 1) {
    ds_priority_add(list, i, i);
}[/gml]

Despu?s, para elegir una bola:
[gml]var idball, ball;
idball = floor(random(ds_priority_size(list));
ball = ds_priority_find_priority(list, idball);
ds_priority_delete_value(list, idball);[/gml]
Y a continuaci?n de eso, para crear la bola:
[gml]instance_create(x, y, ball);[/gml]
O en caso de que tengas un solo objeto para todas las bolas, seguramente quieras hacer algo como...
[gml]with (instance_create(x, y, ball)) {
    number = idball;
}[/gml]

Nunca us? colas de prioridad (ni ninguna estructura de datos) en GM. La informaci?n para hacer el post la saqu? de ac?.
Vim.

Hola, aqui un ejemplo que hice para otro topico, crea una lista de enteros sin repetirse pero facilmente lo puedes modificar para objetos, sprites, paths, etc... saludos.

http://www.comunidadgm.org/index.php?action=dlattach;topic=13803.0;attach=8346
Saludos Cordiales!!!

Gracias Wadk y Zeit. Los c?digos de Wadk est?n un poco por encima de mi capacidad, pero s? que son muy buenos. Los ir? aplicando y cuando surja la dificultad, le pido asesor?a. La verdad, tengo un objeto para cada bola y eso lo hace tedioso. Lo hice as? porque cada bola deber? compararse con cada n?meo en el cart?n para ver las coincidencias y los pagos.

Trabajo en eso a ver qu? me conviene.

Gracias a ambos.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.