Saludos. Agradecería la ayuda de alguien mas instruido que yo (que es fácil).

Tengo un array de sprites.

sprArray[n] de 6 sprites.

Pongo en pantalla uno de ellos al azar mediante sprite_index = sprArray[floor(random(n))];

Lo que he intentado y no he sabido hacer es que el siguiente sprite que salga, obligar a que sea uno distinto al anterior, vamos, que no haya repetición, esto he toqueteado intentando cambiar el array, eliminando el sprite que ya ha salido, colocando el último en su lugar y modificando el array para hacerlo a random (n-1), pero  no sé hacerlo.

También me gustaría poder guardar los sprites que han salido en pantalla para la siguiente room, y utilizarlos después.

¿Me podrías ayudar?




#1 Mayo 13, 2014, 05:21:21 AM Ultima modificación: Mayo 13, 2014, 05:36:34 AM por Clamud
Me basé en tu procedimiento para hacer el siguiente código.
[gml]
//Primero se define cada componente del arreglo
sprArray[0] = sprite0;
sprArray[1] = sprite1;
//...
sprArray[n] = spriten;
[/gml]
Para obtener un sprite al azar se hace lo siguiente.
[gml]
i = irandom(n); //un entero de 0 a n
sprite_index = sprArray;

//El elemento actual se intercambia con el último
aux = sprArray;
sprArray = sprArray[n];
sprArray[n] = aux;

//Por último se decrementa la variable n
n -= 1;
[/gml]
La próxima vez que se ejecute el segundo código debe aparecer un sprite diferente.

Para guardar los sprites puedes crear un array global con los sprites que han salido y otra variable global que indique cuántos han salido.
Espero que te sirva.

Muchas gracias, lo voy a intentar como tu dices.

Gracias de nuevo.

Gracias por tu respuesta.

Tu contestación es estupenda, ya me va perfectamente.