Ver la versión completa : Un problema muy extraño en fenix
Estoy programando un juego en fenix y resulta que cuando pulso _alt el juego se queda "congelado" durante un segundo mas o menos. Aqui pongo una version resumida:
program nave;
//declaracion de variables
begin
//inicializacion del programa
nave();
loop
//gestion del scroll
end
end
process nave()
//declaracion de variables
begin
loop
if (key(_alt)) shot(1,x,y);
end
end
Process shot (tipo,x,y)
private
int energia;
Begin
Switch (tipo)
Case(1):
graph=53; size=50; energia=2;
Repeat
advance(5);
Frame;
Until (energia<=0)
End
End //fin switch
End
El caso es que solo pasa cuando genero el 1º disparo, despues ya no ocurre.
Alguien sabe a que puede ser esto?
Al compilar no da ningun error verdad?
Lo curioso es que no me da error al compilar, y al ejecutar el juego todo va bien hasta que al pulsar _alt, creo el 1º proceso de disparo y se detiene por un momento el juego, porque los siguientes disparos no dan problemas.
perdon, al copiar el programa cometi un error.
process nave()
//declaracion de variables
begin
loop
if (key(_alt)) shot(1,x,y);
frame;
end
end
pero el problema persiste.
no entiendo tu codigo del disparo
Begin
Switch (tipo)
Case(1):
graph=53; size=50; energia=2;
Repeat
advance(5);
Frame;
Until (energia<=0)
End
sencillamente ¿cuando se supone que la energia es < o = a cero? si no tienes nada que modifique la variable energia, ese Until es infinito. (y deberia ralentizarte hasta hacerse inmovible ya que si disparas seguido al no terminar los procesos de disparos se amontonan), tambien deberias eliminar los procesos una vez se salgan de la pantalla y hacer algun metodo por el cual cuando dejes el boton de disparo pulsado no se cree un disparo por frame (a 60fps serian 60 procesos Disparo que manejar, y se supone que necesitas agilizar el uso de CPU por si quieres aprovechar para otras cosas)
y sobre lo que decias, ¿has probado usando otra tecla como boton de disparo? (lo mas recomendable seria usar teclas normales, por ejemplo A o Z para disparar)
Hmmm es bastante factible que sea culpa del ALT sobretodo si estas compilando en modo DEBUG... el alt ademas de ser un a"tecla" es un modificador para comandos combinados y hay que comprobar pulsaciones adicionales al ALT cuando está pulsada...
He probado cambiar la tecla _alt por _z y sigue igual.
Pero he probado usar un proceso que crea los procesos problematicos al principio (para que no se note) y luego mandarles un s_kill, para que despues el juego siga normalmente.
De este forma he condeguido minimizar el fallo en gran medida.
Es posible que fenix tenga algun problema de memoria dinamica al crear procesos de gran tamaño, como de una 50 lineas??
necesitaria el codigo completo del proceso para poder contestarte a eso... de todas formas es bastante raro lo que indicas salvo que haya structs complejas anidadas o algo similar...
otra cosa es sobre el "size=50", pienso que mas que comer CPU poniendo todos los disparos a 50% de tamaño, ¿por que no dibujas el disparo a ese tamaño?, os mola consumir CPU innecesariamente xD (como te de por pasarlo a la GP32 lo va a flipar), aunque sigo sin encontrar una explicacion por el que se te congele un segundo al disparar por primera vez.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.