Ver la versión completa : el tiempo vuela (problemas usando timer[])
pues eso .. no se por que puede ser, pero en el pc me fuinciona perfecto la chorradita que he hecho , pero si n embargo en la gp , cuando se supone que tiene ke eserpar un sg para hacer algo , pues lo hace de golpe sin esperar... :?
alugien sabe pk puedeser? alguna otra manera de hacer que pase un tiempo sin hacer nada?
Hombre una manera cutre de no hacer nada:
Private count=0;
Repeat
count++;
frame;
Until count==200; // Modificar el 200 por el valor que quieras esperar sin hacer nada
PD: Haver si alguien explica bien como funcionan los timers que a mí también me interesa.
hombre.. yo no se si tiene que ver con la ausencia de relog de la gp32 o es que tengo algo mal y no me entero :P
pero mi codigo esta "asin":
//me espero un segundo y medio
timer[0]=0;
while (timer[0]<=150)
frame;
END
//y luego hago lo que me da la gana
LaCosaQueHaceDispues();
se supone que 100 es un sg y que el timer se va incrementando solo con el paso del tiempo real :P vamos que no hay mucha difernecia entre eso y hacerlo como dices tu exepto en que puedes poner el tiempo que queda de manera exacta...
Umm no se apenas nada de esto pero... mirando asi el codigo... no podria ser...
timer[0]=0;
loop
if (timer[0]==150) break; end;
frame;
end;
???
NOTA: Toy intentado aprender =P
No en teoría el código esta bien.
El bucle While se ejecuta (haciendo solo el frame, osea nada) mientras que el timer no alcanze el valor 150. Cuando la condicion se incumple (osea que el timer[0]=>150) esta deja de ser valida y se pasa a continuar con el processo desde el ultimo END.
EDIT: No seas perry y no me edites el mensaje mientras te contesto!! XDDDDDDDDDDDDDDDDDDD
el timer es una funcion que no es exacta; nunca se debe igualar a un número en concreto porque no va aumentando de 1 en 1. Esto es causado porque, por ejemplo; si un juego va a 25 fps; y el timer va en centesimas de segundo; en cada fotograma avanzará 4 unidades (y aun así no lo hace exactamente, igual son 3 o 5) porque los valores se comparan una vez por fotograma.
Lo mejor, si quieres que tarde un segundo y medio lo calcules por frames; es decir, si el juego va a 30 fps, haz una variable que cuente hasta 45.
EDIT: No seas perry y no me edites el mensaje mientras te contesto!! XDDDDDDDDDDDDDDDDDDD
Jejejeje esq me di cuenta q lo de antes estaba mal :P
Asias por la info ;)
we... yo esto es lo primero que hago en fenix
a cuantos fps se supone que va si no lo pones en ningun lado?
Ya puestos pregunto yo otra cosa, aunq no sea del tema (espero q no se moleste takishi) Pero esq he buscado y como salen 7000 post, pues como no no me los voy a leer todos, me puedo tirar una semana XDD.
Cuando haces algo en fenix
tienes tu:
program Pepito;
global <-- variables globales de todo el codigo
begin
aqui meto el modo grafico, fichero de graficos y luego lo q no entiendo de los ejemplos q vi...
//Embucla el proceso principal.
loop
frame;
if(key(_space)) break; end
end
end
y ahora los procesos
process Manolete()
private <- meto variables propias
begin
end
ahora lo q yo digo es...
si lo q quiero es q al pulsar cierta tecla se ejecute cierto proceso, eso lo tengo q meter en el proceso principal?
tipo: if(key(_left)) process left(); end; ???
teniendo un proceso llamado left donde apareciera la animacion del muñeco y tal.
o si tubiera un process magia()
tendria q poner if(key(_tab)) process magia() end;
todo dentro del principal?
Si es de ser muy burro podeis mandarme a freir y con tiempo me leere los millones de post sobre el tema q fijo q a alguien se le ocurrio la duda antes q a mi... asias de antemano.
No hace falta que todo estea en el "bucle inicial" como tu le llamas. Un simple proceso puede ejercer de "bucle inicial" si tu quieres.
program Pepito;
global <-- variables globales de todo el codigo
begin
principal();
End
Process Principal()
//Este pasaria a ser tu blucle principal. Ha de esxistir un bucle principal que mantenga el programa loopeado porque sino este acabaria despues del primer frame. El chekeo de teclas tendría que estar en este proceso o en otro que corra paralelo al principal ya que has de poder chekear las pulsaciones de teclas cada frame.
loop
frame;
if(key(_space)) break; end
end
end
Licantropo
10/02/2005, 14:47
Hombre lo puedes hacer asi,pero depende de lo que quieras exactamente:
Yo si tuviese un personaje lo haria mas o menos asi:
Program muñecajo;
Glogal
Begin
//poner intro (puede ser otro metodo)
nivel1()
Loop
Frame;
if(fin juego)
break;
end
End
procces nivel1()
Begin
cargar fondd de nivel, musica, fuente
idpersonaje=personaje()
Loop
Frame
if(fin de nivel)
cargar proximo nivel (con esta misma estructura mas o menos)
break;
end
signal(s_kill,idpersonaje);
End
procces personaje()
Private ....
Begin
idmovi=movimiento();
idmagia=magia();
Loop
frame;
if (personaje palma)
break;
end
End
signal(s_kill,idmovi);
signal(s_kill,idmagia);
End
Procces movimiento()
//Aqui es donde meteria toda la movida de la pulsacion de teclas
End
Procces magia()
//aqui meteria lo de que si pulsas tal tecla pues haces la magia
End
Algo asi haria yo. Descomponiendo el programa en bastantes procesos, de esta forma si algo esta mal te sera mas facil localizarlo y cambiarlo.
Si tienes mas dudas pregunta y si puedo te las intentare responder y sino se pues seguro que hay alguien que lo sabe. Venga hasta luego y animo.
Creo q lo he pillado, hare pruebas y si me sale alguna duda os cuento. Asias a los dos ^^
sobre lo del timer :
puse que al comenzar el juego saliese arriba del todo un texto con el valor de timer[0] y cuando aparecia el jeugo en la pantalla ese contador ya iba por mas de 300 , supogno que por alguna movida del fenix ahi un retardo de cuando empieza el programa a cuado se empieza a mostrar (?)
si que lo hay, por eso insisto en que no useis el timer.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.