El protagonista muere

Started by NesKy, November 29, 2010, 03:42:12 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

NesKy

Buenas,

Tengo un problema con el timer[0]. Estoy intentando hacer que al morir el protagonista, se congele el scroll y al cabo de 2 segundos renazca el protagonista al principio del scroll y éste se reinicie de nuevo. Este es el código:

PROCESS Main()
Private
   int idstrack;
END
BEGIN
...
     LOOP
IF(exists(type protagonista)==0)
signal(idstrack,S_FREEZE);
timer[0]=0;
IF(timer[0]>=200)
idstrack.x=scroll[0].x0;
signal(idstrack,S_WAKEUP);
protagonista();
END
                END
                FRAME;
     END
END
//El idstrack es el identificador del proceso que sigue el scroll.

Para comprobar que pasaba, he hecho que escriba en pantalla el valor de timer[0] y al morir el prota, efectivamente se pone a 0 pero no se "reinicia", se queda a 0. Repasando el manual pone que el proceso timer se inicia al ejecutar el programa, pero no entiendo porque no se reinicia cuando le das valor 0... Puede que sea algo relacionado con el FRAME?

En el código que veis, al morir el prota solo para el scroll.

Quote from: MANUALUn temporizador es un cronómetro programable accesible en todo momento. Bennu dispone de 10 temporizadores accesibles a través de una tabla de variables globales enteras llamadas TIMER (desde timer[0] a timer[9]), siempre y cuando se importe el módulo "mod_timers". Estos temporizadores siempre se inicializan automáticamente al comenzar el programa al valor 0 y se incrementan automáticamente 100 veces por segundo. En cualquier momento puede cambiarse el valor de uno de ellos, por ejemplo inicializándolo de nuevo a 0, para controlar una cantidad de tiempo concreta.

DCelso


PROCESS Main()
Private
   int idstrack;
END
BEGIN
...
     LOOP
IF(exists(type protagonista)==0)
signal(idstrack,S_FREEZE);
timer[0]=0;
                        loop
                           IF(timer[0]>=200)
idstrack.x=scroll[0].x0;
signal(idstrack,S_WAKEUP);
         protagonista();
                                 break;
       END
                               frame;
                      end
                END
                FRAME;
     END
END
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

O bien,

PROCESS Main()
Private
   int idstrack;
END
BEGIN
...
     LOOP
IF(exists(type protagonista)==0)
signal(idstrack,S_FREEZE);
timer[0]=0;
                           while(timer[0]<200)
                                 frame;
       END
idstrack.x=scroll[0].x0;
signal(idstrack,S_WAKEUP);
        protagonista();
                END
                FRAME;
     END
END
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

Tu código no hacía lo que querías, porque al morir el prota, exist (type protagonista) siempre es 0 y siempre vuelves a setear el timer a 0, por lo tanto siempre va a valer 0 y nunca valdrá 201 para entrar a crearlo.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

NesKy

Ahora funciona ok. Bueno, almenos esta vez me he acercado un poco mas.

Gracias!

laghengar

!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

NesKy

Quote from: laghengar on November 29, 2010, 09:45:00 PM
DIOSSSSSSSS, SPOILERSSSSSSSSS
Dado el argumento actual de mi juego, sí, es el spoiler mas grande que he dado jaja.

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/