Ver la versión completa : Estoy hundiendome,jujuju
Es que tengo dudas existenciales, xq intento que una nave(movida por mi, punto verde), vaya atraves de un laberinto, pero no consigo que se vea nada en la pantalla, solo negro, y cuando quito el proceso laberinto, y le meto un put_screen, entonces is sale el fondo y el punto verde, no lo entiendo, podeis exarme una mano
Program Gme;
Global
fichero;
Begin
set_mode(320,240,16);
Fichero=load_fpg("fichero1.fpg");
Loop
If(key(_enter))
Break;
End;
Nave();
laberinto();
Frame;
End;
End
Process nave();
Begin
x=160;y=120;graph=3;
Loop;
If(key(_left) AND x>32);
x-=4;
End
If(key(_right) AND x<290);
x+=4;
End
If(key(_up) AND y>32);
y-=4;
End
If(key(_down) AND y<290);
y+=4;
End
If(key(_enter));
exit(0,"");
End
If(collision(Type laberinto));
x=160;y=120;
End
Frame;
End
End
Process laberinto();
Begin
graph=1;
Loop;
Frame;
End
End
Eden se despide.
Sorry no lo puedo mirar muy a fondo pero... en el proceso laberinto no deberías indicar la posicion x e y del graph para que este se represente?
me parece que el programa tiene al menos un error muy grave (no me he entretenido a mirar mas)
Loop
If(key(_enter))
Break;
End;
Nave();
laberinto();
Frame;
End;
si esta estructurado como me ha parecido, llamas un proceso laberinto y nave por cada frame. Eso seria erroneo total, ya que si el programa funciona por ejemplo a 24fps inicializara 24 naves y 24 laberintos por segundo. (al rato tendras una hermosa coleccion de procesos repetidos que no vienen a cuento), lo correcto seria iniciar los procesos antes de que entre al bucle y ademas llamarlos por el orden en que quieres que se ordene en pantalla (al menos si no tienes pensado definir la Z del proceso), seria algo asi:
laberinto();
Nave();
Loop
If (key(_enter)) Break; End
Frame;
End;
Otra cosa es que puedes modificar el proceso nave para que admita valores, Nave (coordenadaX,coordenadaY), tendrias que modificar el proceso nave para que empezara asi
Process nave(x,y)
Begin
basicamente lo que metas en el parentesis ira a para a esas variables del proceso, asi que al poner Nave (100,80) la nave saldra en X=100 Y=80. Puedes usar cualquier variable "Private" del proceso de la misma forma.
Mirando tambien un poquito mas el programa... no tendrías que realizar un mapa de durezas?
No tengo mucha experiencia en ellos, la verdad, pero por lo que parece estas "comprobando" con la funcion collision si la nave y el laberinto chocan (se dibujan los dos en un mismo pixel) y eso no te funcionará ya que el "sprite" del laberinto, al ocupar toda la pantall (supongo), siempre chocará con la nave.
Mirate ejemplos de mapas de durezas o el source del GPball que tendrían que funcionar de una manera parecida y es como se ha de hacer.
Byes
PD: Lo que comenta Darumo es muy cierto... la verdad es que es un fallo bastante común (a mi me pasa muchas veces por descuido... pero mola ver como la GP32 "se peta" al haber 300 kens (y subiendo) en pantalla haciendo varias animaciones... :abeber:
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.