-
Ayuda para comprender codigo de ejemplo
Hola, podriais ayudarme a entender este ejemplo de puntos de control?
Es q no logro entender las funciones fget....los OFFSET...get_point(dos veces)...
Program puntos_de_control;
Global
punto=1;
x_punto;
y_punto;
Begin
write(0,70,180,1,"Pulsa Esc para Salir");
load_fpg("circuito.fpg");
put_screen(0, 1);
graph=2;
Loop
If(key(_esc )) exit("",0);End
If (fget_dist(x, y, x_punto, y_punto)<6)//xq menor q 6??
If (punto++==40) punto=1; End // suma unidad al avance y al llegar al punto 40 vuelve al origen q es el 1
End
// Cogemos el punto de control del circuito
get_point(0,1,punto, OFFSET x_punto, OFFSET y_punto);
angle=fget_angle(x, y, x_punto, y_punto);//esto es
//solo para girar el grafico hacia donde vaya la ruta de puntos
advance(6);??????para q se usa advance aqui?
Frame;
// Coge la posici¢n de salida de un punto de control
//o eso dicen xq no se para q usa esta funcion aki
get_point(0,1,punto,&x,&y);
End
End
Lo q esta en azul es lo comprensible...lo demas lo q necesito entender....
En rojo las dudas principales y comentarios propios
gracias y 1saludo
-
-
Lenguaje fenix:
If (fget_dist(x, y, x_punto, y_punto)<6)
If (punto++==40) punto=1; End
End
En cristiano:
Si la distancia entre punto en el que estoy y el punto al que quiero llegar es menor que 6 (al programador le parecio una distancia suficientemente pequeña como para decir que ha llegado) entonces es que estoy lo bastante cerca por lo que debu buscar el punto sigiente; a no ser que sea el punto nº40; en este caso volveré a dirigirme al punto 1.
En fenix
get_point(0,1,punto, OFFSET x_punto, OFFSET y_punto);
angle=fget_angle(x, y, x_punto, y_punto);
En cristiano:
Buscame las coordenadas del punto que estoy buscando que esta en el mapa nº 1 del fichero nº 0 y me las das en la variables x_punto e y_punto.
Luego haces que apunte en un angulo igual al que hay entre mis coordenadas y las que acabo de calcular
En fenix
Advance(6);
En cristiano:
Avanzo 6 puntos en el angulo que conseguí antes (6 es una buena velocidad además arriba se puso que si la distancia es menor que 6, oséa, menos de lo que avanzo por fotograma, lo tome como que he llegado).
La funcion despues del frame no la pillo... :P te la miro mañana con mas tiempo.
-
-
Y q tendria q variar para q al pulsar un boton avance mas rapido o mas despacio el proceso? xq solo consigo q el proceso este parado y se mueva al pulsar _B. Pero el 6 de advance aunq lo cambio no se ve cambio en la velocidad del movimiento......
1saludo y gracias
-
-
Chipan, el advance(6) aunq lo varie, no cambia la velocidad del objeto....como podria hacer para q vaya mas rapido o lento?
Si fuera en ese advance, seria muy facil....
if(key(_B)) vel++;
advance(vel);
if(vel>10) vel=10;
End
End
etc....
Pero es q ya digo q no influye la variable en advance....al menos en este caso, xq en otro ejemplo q hice sin ruta, en el q movia a mi personaje, con advance evidentemente movia el prota y segun la variable se movia mas o menos....pero aqui....
1saludo
-
-
Debe ser cosa de la ultima linea que hay despues del frame; que sigo sin ver para que sirve... Pero ten por seguro que el parametro que se le pasa a advance son el numero de unidades que debe avanzar.
-
Permisos de publicación
- No puedes crear nuevos temas
- No puedes responder temas
- No puedes subir archivos adjuntos
- No puedes editar tus mensajes
-
Reglas del foro
Marcadores