No entendí muy bien, pero suponiendo que cada jugador tiene una oportunidad de tiro, y si falla pierde el turno...
[CREATE] del controlador
[gml]globalvar turno, oportunidad;
turno = 0 //0 = turno del jugador 1, 1 = turno del jugador 2
oportunidad = 1 //El usuario tiene una oportunidad para hacer su siguiente tiro (siempre que no falle)
[/gml]
En el jugador 1 y 2, debe haber código para saber si el proyectil dio en el blanco o no, si p1 o p2 acierta, pues aumentará su marcador, pero si falló, entonces hay que avisar que
[gml]oportunidad = 0[/gml]
Luego, en [STEP] del jugador 1
[gml]if (turno == 0) //Si durante mi turno...
{
if ( !oportunidad ) //... fallé el tiro...
{
turno != turno //se cambia de turno al jugador 2 (si es 0 se hace 1, si es 1 se hace 0)
oportunidad = 1
}
//Más acciones que pasan cuando es turno del jugador 1
}[/gml]
Aquí se observa que la variable oportunidad es una variable que sirve para controlar la oportunidad de cualquiera de los dos jugadores, que sirve para informar si hay un fallo (de cualquiera) y que nos estamos apoyando en la variable turno para decidir qué jugador debe disparar. En el jugador 2 la idea es la misma
[STEP] jugador 2.
[gml]if (turno == 1) //Si durante mi turno...
{
if ( !oportunidad ) //... fallé el tiro...
{
turno != turno //se cambia de turno al jugador 2
oportunidad = 1 //El otro jugador tiene una oportunidad
}
//Más acciones que pasan cuando es turno del jugador 2
}[/gml]
Sobre la duda de "como lo detengo para que no haga esa cosa a cada step" creo que queda claro que eso depende de la condición que uses en el if. Sólo se puede entrar al IF si oportunidad es 0 o false, y cuando eso pasa, en el bloque mismo te aseguras de que sólo se ejecuta una vez cambiando el valor de la variable oportunidad a true o 1, por lo que el if no se vuelve a ejecutar hasta que uno de los jugadores falla.
... o eso creo, a lo mejor hay algún fallo, pero la idea es esa. :-[ De hecho, las variables turno y oportunidad pueden ser dos variables (incluso no es necesario que sean globales) declaradas en cualquiera de los dos objetos jugador, pero como se usan en ambos, a mi me gusta usar un controlador con variables globales, que aparte puede servir para dibujar esas variables y otras cosas sin que afecte el dibujo de de los jugadores
[CREATE] del controlador
[gml]globalvar turno, oportunidad;
turno = 0 //0 = turno del jugador 1, 1 = turno del jugador 2
oportunidad = 1 //El usuario tiene una oportunidad para hacer su siguiente tiro (siempre que no falle)
[/gml]
En el jugador 1 y 2, debe haber código para saber si el proyectil dio en el blanco o no, si p1 o p2 acierta, pues aumentará su marcador, pero si falló, entonces hay que avisar que
[gml]oportunidad = 0[/gml]
Luego, en [STEP] del jugador 1
[gml]if (turno == 0) //Si durante mi turno...
{
if ( !oportunidad ) //... fallé el tiro...
{
turno != turno //se cambia de turno al jugador 2 (si es 0 se hace 1, si es 1 se hace 0)
oportunidad = 1
}
//Más acciones que pasan cuando es turno del jugador 1
}[/gml]
Aquí se observa que la variable oportunidad es una variable que sirve para controlar la oportunidad de cualquiera de los dos jugadores, que sirve para informar si hay un fallo (de cualquiera) y que nos estamos apoyando en la variable turno para decidir qué jugador debe disparar. En el jugador 2 la idea es la misma
[STEP] jugador 2.
[gml]if (turno == 1) //Si durante mi turno...
{
if ( !oportunidad ) //... fallé el tiro...
{
turno != turno //se cambia de turno al jugador 2
oportunidad = 1 //El otro jugador tiene una oportunidad
}
//Más acciones que pasan cuando es turno del jugador 2
}[/gml]
Sobre la duda de "como lo detengo para que no haga esa cosa a cada step" creo que queda claro que eso depende de la condición que uses en el if. Sólo se puede entrar al IF si oportunidad es 0 o false, y cuando eso pasa, en el bloque mismo te aseguras de que sólo se ejecuta una vez cambiando el valor de la variable oportunidad a true o 1, por lo que el if no se vuelve a ejecutar hasta que uno de los jugadores falla.
... o eso creo, a lo mejor hay algún fallo, pero la idea es esa. :-[ De hecho, las variables turno y oportunidad pueden ser dos variables (incluso no es necesario que sean globales) declaradas en cualquiera de los dos objetos jugador, pero como se usan en ambos, a mi me gusta usar un controlador con variables globales, que aparte puede servir para dibujar esas variables y otras cosas sin que afecte el dibujo de de los jugadores