Path_Find

Started by Hola, December 25, 2008, 10:50:42 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Hola

Hola a todos, tengo un problema; he buscado en los foros de divsite, en fenixwiki, en el fenixpack, en la ayuda de div2, en el test de fenix y no lo logro encontrar lo que busco.
Hablo de cómo rayos se usa el path_find  ???

Quiero decir, lo que yo busco es simplemente que un grafico cada vez que yo hago click en algun punto de la pantalla, se mueva desde su punto hasta este punto que creé al hacer el click, o sea desde la x, y del prota hasta las x, y del mouse...bien, ahora, cómo hago para que se mueva el personaje hasta esta coordenada, evite obstaculos, y yo pueda manipular la velocidad de movimiento???????????????????????
Si podrian ponerme un codigo se lo agradeceria (por favor, nada de codigos de fenix test o div2, ya los mire y no entiendo nada), se lo del mapa de durezas, pero tambien tengo problema con eso, osea, como los parametros del path find no son iguales a los del path find de div, tengo bastantes problemas.

Espero que me ayuden, es urgente.

SplinterGU

bajate del svn de fenix en sourceforge, los fuentes de la version 0.92 o alguna parecida, en el directorio test o bin, tenes un ejemplo que se llama test.prg, ahi tenes un ejemplo parecido al que pedis...
saludos
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

#2
yo tenía un código... pérame... mmmmm...

ya lo encontré: es del bennu wip 2, pero no debería haber muchos cambios

[code language="bennu"]
path_find(
fichero, // fichero del gráfico del mapa que debe ser sólo color blanco y negro
gráfico, //el mapa (por el negro caminas, y el blanco se detiene) si estás en una zona blanca y llamas la función path_get(x,y) se traba, al menos antes me pasaba esto, no se con la actual versión.
x ,  //(en la que estás)
y ,  //(en la que estás)
x1 , //(a la que quieres ir)
y1 , //(a la que quieres ir)
1 ); //(no recuerdo, posiblemente sea los puntos que se desplazarán, o quizá sea la calidad de movimiento [que tan cercas de la pared y todo eso... me inclino más a que sea la calidad del movimiento, pero prueba, no pierdes nada :) ] )
          while (path_getxy(&idx, &idy))  ; //si se puede le pasa las nuevas coordenadas a las variables idx, idy
                       
                  x=idx;  y=idy;   //lo hace avanzar a las nuevas coordenadas
                 

                  end
//esto es en teoría
[/code]

esta es la lógica de la función.

si quieres ir más rápido puedes hacer un bucle de la siguiente forma:

[code language="bennu"]
for (z=0;z<velocidad;z++);
                path_getxy(&idx, &idy); //si se puede le pasa las nuevas coordenadas a las variables idx, idy
                 
                 
end
x=idx;  y=idy;   //lo hace avanzar a las nuevas coordenadas
frame;
[/code]



editado---------
he hecho un ejemplo, tuve problemas :) pero aquí está :
abajo, para descargar, y muy comentado:
apliqué todo lo que arriba te dije.

A propósito, antes había dicho que cuando la distancia entre el punto de fin y el de inicio es mayor a 350 ya no avanza, aquí lo muestro, escribiendo la distancia a la que se puede ("se puede", "no se puede")  y cuando estamos en un color blanco o negro (utilizo map_get_pixel).
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)