Hola pues estoy haciendo un juego donde quiero limitar el numero de continiues que tiene y no consigo hacerlo esto es lo tengo :
[ obj_jugador_muere ]
( CREATE )
alarm[0] = 50
image_speed = 0.3
intentos = 3 ;
[ ALARM[0] ]
if (lives>=0)
{
lives-=1
room_restart ()
}
else if lives <= 0
{
show_message ( " has muerto " );
room_restart ()
lives+=2
intentos-=1
if ( intentos < 0 )
{
game_restart ()
}
}
Lo que necesito es limitar esos continues es que siempre me reincia y he probado varias cosas ya mediante evento alarm[1] , evento STEP ... y nada no lo logro hacer haber si me podeis ayudar gracias. XD
Una pregunta, para que sigues poniendo código después de un room_restart()?
Hola pues el room_restart () , es para que cuando inicie de nuevo el room le agregue nuevas vidas ( lives+= 2 ).
Lo que necesito es LIMITAR los continues en he intentado con bucle for , tampoco, mediante el string ( "continues" , continues-- ));. Necesito eso el personaje muere , aparece el mensaje : show_message ( " has muerto " ) , luego sale el mensaje : show_message ( "tieees 3 continues " ) , luego que se VAYAN , restando a la variable intentos cada vez que reinicia el room . Una vez que lo continues == 0 , el juego acaba .Gracias.
Ya, pero te quiero decir, en el momento en que haces un room_restart(), ese código que va después, no se ejecuta.
Es como si pones, game_end(), y debajo de ello, i=i+2.
Hola pues haber si me puedes ayudar a resolverlo por que no tengo ni idea XD
Saludos, primero como ya dijeron, siempre que uses funciones que finalizan un programa/código como room_restart game_restart, break, exit, hay que poner todas las instrucciones que deseas antes de ellas, para que se ejecuten.
Según entiendo el código ¿la variable "intentos" son los continues verdad? bueno el problema es que cada vez que se muere llamas al "obj_jugador_muere" y con "intentos = 3" los continues siempre se van a reiniciar a 3, por tanto nunca terminará.
Una forma fácil de solucionar sería crear la variable intentos como variable global, y la declaras en otro objeto que gestiona el juego en general, como un obj_main, por ejemplo:
- Crea el obj_main y lo pones en cualquier lugar del primer room
obj_main - evento create
[gml]
global.intentos = 3;
[/gml]
y tu código sería algo así:
obj_jugador_muere - evento create
[gml]
alarm[0] = 50;
image_speed = 0.3;
[/gml]
obj_jugador_muere - evento alarm[0]
[gml]
if (lives > 0)
{
lives-=1;
room_restart ();
}
else
{
if global.intentos > 0
{
show_message ( " has muerto " );
lives+=2;
global.intentos-=1;
room_restart ();
}
else
{
global.intentos = 3;
game_restart ();
}
}
[/gml]
Hola muchas gracias por ayudarme a los dos ya he conseguido hacerlo despues de 3 intentos el juego finaliza como yo quieria.
efectivamente obj_muere siempre se llamaba y reiniciaba el room , ahora finaliza cuando quiero.El caso es que habia probado con un metodo parecido al tuyo ( crear un objeto independiente ) , pero ha sido la variable global la que ha hecho posible .... es verdad la variable gobal XD :D estaba comiendome y no me acorde de usarla muchas gracias.
les sugiero que establescan constantes como:
CONTINUES, MAX_LIVES, etc. asi cuando tengan que cambiar ese valor lo haran de manera directa en esas constantes y no sobre su codigo.
hay que seguir las buenas practicas.
Muchas gracias por la sugerencia sommus XD