jerarquia

Started by juguefre, June 11, 2017, 01:26:46 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

juguefre

Ok he creado esta jerarquía y no logro hacer que se comporte como la necesito.

En la primera imagen coloco las 2 flechas como deben quedar en la pantalla,

En la segunda imagen he rotado la flecha roja 90 grados y la verde no la sigue.

En la tercera imagen a la verde le he agregado

                x = father.x;
      y = father.y;
      angle=father.angle;

y la verde sigue a la roja en x & y  pero rota con relación a su propio pivote.

En la cuarta imagen he manipulado el pivote de la verde con

               center_set(0,graph,50,200);

asi el pivote de ambas esta en el mismo lugar y finalmente logro que la verde siga perfectamente a la roja (pero esto es mas un problema que una solución).

En la quinta imagen necesito rotar la verde en la dirección contraria (tal y como se ve en la imagen)estando aun en la punta de la flecha roja pero no puedo por que el pivote lo use para seguir a la flecha roja en la imagen cuatro..........

Necesito que la flecha verde este siempre en el lugar donde la coloque con respecto a la roja, en este caso la base de la flecha verde siempre debe estar en la punta de la flecha roja y la flecha verde debe poder rotar libremente.

Supongo que me falta una parte en la jerarquia  :-\ pero ya me quede bloqueado en este tema.




Gracias por su tiempo.

SplinterGU

se me ocurre que quizas es un tema de prioridades (priority)

sin ver codigo es dificil darte una respuesta correcta.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

juguefre

Este es el codigo:

import "Mod_grproc";
import "Mod_proc";
import "Mod_text";
import "Mod_key";
import "Mod_mouse";
import "Mod_video";
import "Mod_map";
import "Mod_screen";
import "Mod_math";

Global
      int fichero;
      int imagen;
process Main()

Begin
      Set_Mode(610,480,16);
      set_fps(0,0);
      fichero = Load_fpg("carros.fpg");
      rojo(460,250,16);
      
      
      
End


process rojo(x,y,z,)
Begin
   verde(160,90,15);
   //AAA(160,139,16);
      File = fichero;
      Graph = 33;
      center_set(0,graph,50,100);
      Loop      
         IF (key(_left))
         x-=4;
         END
         IF (key(_right))
         x+=4;
         END      
         IF (key(_1))
         angle+=100;
         END
         IF (key(_2))
         angle-=100;
         END
      //write_int(0,50,50,0,&fps);
      Frame;
      End
End

process verde(x,y,z)

Begin
      File = fichero;
      Graph = 34;
      center_set(0,graph,50,100);
      Loop
      x = father.x;
      y = father.y-100;
      angle = father.angle;
      Frame;
      End
End

SplinterGU

puedes poner el codigo junto al fpg en un zip?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

juguefre

En el zip estan el fpg, el prg y el dcb

SplinterGU

#5
a mi me va de lujo, no se con que version estas probando.

el unico tema que cuando me voy a la derecha revienta... algun bug... (revienta al usar una resolucion no estandard)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

el set_center no es

        center_set(0,graph,50,100);

tiene que ser

        center_set(file,graph,50,100);


Download Lastest BennuGD Release: http://www.bennugd.org/node/2

juguefre

whaaaaaaat.........



como asi? le funciona y la flecha verde mantiene su posicion en la punta de la flecha roja al rotar???????

juguefre

Estoy usando notepad++ v6.5.1 (unicode)

SplinterGU

version de bennugd.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

file = 0 se usa para graficos creados desde bennugd o cargados individualmente (por ejemplo, new_map, map_load, png_load, etc...), cuando haces un fpg_load, no puedes usar 0, tienes que usar el identificador devuelvo por la funcion fpg_load, (puede ser que devuelva 0, pero nadie te lo garantiza)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

juguefre

Es bennupack 2.6

A mi me hace esto al rotar:

https://youtu.be/bW1v0W9xp1Q

De la unica forma que la flecha verde sigue estando en la punta de la roja es manipulando el pivote de la flecha verde.

SplinterGU

ahora entiendo que quieres... pense que querias que roten los 2, rotar, rotan...

no tiene nada que ver con las jerarquias... ya te paso como seria...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

juguefre

Lo que trato de lograr es esto:

https://youtu.be/iW8IP7Dk9X8

una tarea simple en teoria........

SplinterGU


import "Mod_grproc";
import "Mod_proc";
import "Mod_text";
import "Mod_key";
import "Mod_mouse";
import "Mod_video";
import "Mod_map";
import "Mod_screen";
import "Mod_math";

Global
      int fichero;
      int imagen;
process Main()

Begin
      Set_Mode(640,480,16);
      set_fps(0,0);
      fichero = Load_fpg("carros.fpg");
      rojo(460,250,16);



End


process rojo(x,y,z,)
public
   cx,cy;
Begin
   priority = 20;
   verde(160,90,15);
   File = fichero;
   Graph = 33;
   center_set(file,graph,50,100);
   set_point(file,graph,1,50,0);
   Loop
      IF (key(_left))
         x-=4;
      END
      IF (key(_right))
         x+=4;
      END
      IF (key(_1))
         angle+=100;
      END
      IF (key(_2))
         angle-=100;
      END
      if (key(_ESC))
         let_me_alone();
         break;
      end
      get_real_point(1,&cx,&cy);
   //write_int(0,50,50,0,&fps);
      Frame;
   End
End

process verde(x,y,z)
private
   rojo padre;
Begin
   priority = 10;
   File = fichero;
   Graph = 34;
   center_set(file,graph,50,100);
   Loop
      padre = father;
      x = padre.cx;
      y = padre.cy;
//      angle = father.angle;
      Frame;
   End
End
Download Lastest BennuGD Release: http://www.bennugd.org/node/2