Otra propuesta es usar estructuras de datos, como mencionó ferhand, pero en vez de listas usar "queues", ya que su función es obtener los elementos en el orden que se van añadiendo.
En el evento Create cada jugador crea una queue:
[gml]
///Crear fila o cola
Q = ds_queue_create();
[/gml]
Para colocar una bomba se hace esto:
[gml]
///Crear bomba y guardar su id
ds_queue_enqueue( Q, instance_create(x,y,obBomba) );
[/gml]
Para destruir las bombas se toman algunas precauciones, por si se pueden destruir con otras bombas, u otros motivos:
[gml]
///Destruir bomba
while( not ds_queue_empty(Q) ) //mientras la fila no esté vacía
{
bomba = ds_queue_dequeue(Q); //sacar el primer elemento
if( instance_exists(bomba) ) //si esa bomba existe
{
with( bomba ) instance_destroy(); //destruir la bomba
break; //ya no buscar otra
}
} //si no existe, revisar el siguiente elemento
[/gml]
Y por último hay que destruir la "fila" al terminar el nivel, escribiendo esto en el evento Room End, para que en el siguiente evento Create no se acumulen filas sin usar:
[gml]
ds_queue_destroy(Q);
[/gml]
En el evento Create cada jugador crea una queue:
[gml]
///Crear fila o cola
Q = ds_queue_create();
[/gml]
Para colocar una bomba se hace esto:
[gml]
///Crear bomba y guardar su id
ds_queue_enqueue( Q, instance_create(x,y,obBomba) );
[/gml]
Para destruir las bombas se toman algunas precauciones, por si se pueden destruir con otras bombas, u otros motivos:
[gml]
///Destruir bomba
while( not ds_queue_empty(Q) ) //mientras la fila no esté vacía
{
bomba = ds_queue_dequeue(Q); //sacar el primer elemento
if( instance_exists(bomba) ) //si esa bomba existe
{
with( bomba ) instance_destroy(); //destruir la bomba
break; //ya no buscar otra
}
} //si no existe, revisar el siguiente elemento
[/gml]
Y por último hay que destruir la "fila" al terminar el nivel, escribiendo esto en el evento Room End, para que en el siguiente evento Create no se acumulen filas sin usar:
[gml]
ds_queue_destroy(Q);
[/gml]