antes que todo hola...
hace mas de un mes que estoy metido en este bonito lenguaje, pero ya tengo algunas dudas....
tengo un proceso que tiene una imagen 1
lo que necesito es que la imagen cuando aparece en el programa, despues de x segundos desaparesca
que quiero decir con desaparezca, matar el proceso y poner otra imagen en su lugar ( esta parte esta ok y funcionando)
la que no logro hacer o entender:
- es como poner tiempo a un proceso y que pasado un x segundo se ejecute una instruccion
en pocas palabras. algo asi
tiempo_proceso1= ?? //
tiempo_max=300 (milisegundos)
if (tiempo_proceso1==tiempo_max)
kill process y llamo a otra imagen en su lugar // esto esta ok se entiende
end
ojo que tengo varios procesos para hacer lo mismo
saludos y gracias
SOLUCION
AL FINAL TOME EL CONSEJO y realice algo asi
y el tiempo del zombie en este caso, esta dado por los fps,
el zombie tiene 300 fps, algo asi como 5 segundos en tiempo
if (tiempo_zombie == max_zombie)
say("muere zombie 1"); //matas el proceso
// mato zombie imagen1 y mato imagen2
signal(type imagen2,S_KILL);
img2=61; x=448; y=192;
imagen2();
img1=61;
graph=img1; x=320; y=192;
imagen1();
tiempo_zombie=0;
else
tiempo_zombie++;
end
gracias a todos por sus respuestas y lecturas del tema...
pronto tendre noticia de lo que estoy haciendo...
Si te da igual que los segundos no sean reales puedes usar un contador:
if (tiempoProceso >= tiempoMax)
//matas el proceso
else
tiempoProceso++;
end;
Ahora bien, ese tiempo ni son segundos ni son milisegundos. Es el numero de frames por segundos a los que corre tu juego, es decir, si el juego corre a 60fps, cada segundo el contador valdrá 60 unidades más.
Si necesitas que sea más exacto con el tiempo, puedes usar los timers.
Por cierto, no entendí muy bien que es lo que quieres hacer, pero , supongo que sabes que puedes cambiar el gráfico de un proceso sin tener que matarlo y llamar a otro ¿no?
Un saludo!
Seria más costoso usar un timer que una variable?
pregunto desde la ignorancia. Gracias.
No, sólo tienes que tener en cuenta que los timers están continuamente contando con lo que tendrás que inicializarlo a 0 antes de tu comprobación, o bien guardarte en una variable el valor previo a la cuenta y luego comparar el valor actual menos el previo para ver la diferencia de tiempo.
GRACIAS POR LAS RESPUESTAS
primero que todo...
necesito matarlo por que ya no me sirve el proceso y lo reemplazo por otra imagen
la cual no hace nada solo se reemplaza
todo esto es aplicado a:
es un programa que a una imagen A, si a la imagen A tiene collision con el mouse , hace algo
si la misma imagen no tiene collision con el mouse, osea no hace nada, en una cantidad de tiempo o de contaro
esa imagen que es un proceso la mato, por que ya no me sirve, y la cambio por otra imagen la cual no hace nada
por eso necesito que el proceso al no tener collision en un cierto tiempo se mate y se aplique otra imagen,,,
lo probé con el timer, pero ese valor es continuo y no me sirve... ya que la imagen tiende a cambiar y a continuar por todo el programa
gracias por las respuestas, ,voy a probar lo que me han dicho, si funciona mando la respuesta por aca
Quote from: Comandante on May 02, 2015, 03:01:40 PM
Aún así yo no andaría matando procesos,lo haría con estados...
switch(estado);
case 0:
graph=imagen1;
tiempo++;
if(tiempo==tiempo_maximo)
tiempo=0;
estado=1;
end
////AQUI PUEDE COLISIONAR CON EL RATON ETC
end
case 1:
graph=imagen2;
//Al estar en otro estado ya no interactúa con el ratón
end
end
SI es muy buena idea y forma,,, pero para este caso si la imagen no interactua con el mouse (collision), no me sirve y estaria de mas en el juego
ademas es una base fundamental para el programa (juego) ya que es la jugabilidad para perder ... es como se inicia la forma de perder dentro del juego
consejo:
·1º progama
·2º optimiza (osea, preocupate por los costes)
agregue la solución...saludos