¿Problema con delete_draw?

Started by Drumpi, June 05, 2010, 05:02:07 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Hola a todos:

Estaba programando con Bennu (muy mal por mi parte, teniendo otras cosas que hacer ;D) y me ha saltado un error. No se si se ha solucionado ya, estoy con la r131 y me parece recordar que hubo algunos cambios al respecto de la mod_draw.

Tengo el siguiente proceso:
[code language="bennu"]process test_mouse_direction ()
private
   int tmd_x1,tmd_y1;
   int tmd_draw,tmd_draw_exists;
begin
   write(0,0,0,0,"Draw a line to get angle and distance.");
   write(0,10,100,0,"ANGLE =");
   write(0,10,110,0,"DISTANCE =");
   
   write(0,0,240,6,"Press ENTER/START to exit.");
   drawing_color(rgb(255,0,0));
   drawing_map(0,0);
   
   tmd_draw_exists=false;
   say("hola");
   
   while (teclas[k_enter][2]!=1)
       if (teclas[mouse_left][2]==1)
           if (tmd_draw_exists) delete_draw(tmd_draw); end
           tmd_x1=mouse.x;
           tmd_y1=mouse.y;
           say("completo");
       end
       if (teclas[mouse_left][2]>1)
           say("segundo paso");
           if (tmd_draw_exists) delete_draw(tmd_draw); end
           say("borrado");
           tmd_draw=draw_line(tmd_x1,tmd_y1,mouse.x,mouse.y);
           tmd_draw_exists=true;
           say("fin segundo paso");
       end
       frame;
   end
   
   //delete_draw(tmd_draw);
   clear_screen();
   delete_text(all_text);
   signal(father,s_wakeup);
   frame;
end[/code]

He hecho mis deberes... o casi, este proceso basta con invocarlo y dormir al padre... y ponerle un gráfico al ratón. El objetivo es pintar una línea desde donde se hace clic con el ratón hasta donde se suelta, en tiempo real, y dejando sólo una. El caso es que al ejecutarlo obtengo la siguiente respuesta en la linea de comandos:

hola
completo
segundo paso
borrado
fin segundo paso
segundo paso

Por lo que falla con delete_draw, sale la ventanita de informe de errores.
Si es un fallo mío, es que estoy tonto, si no, pues reportado queda, mientras, usaré clear_screen.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

no es drawing_map(0,0)


proba con drawing_map(-1,0)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

¿El -1 es para dibujar directamente sobre el buffer de pantalla?

Pensaba que sólo podía accederse a ese map para lectura, no para escritura :o

Aprovecho para offtopicar ligeramente y comentar una curiosidad sobre el map -1:

Recientemente un amigo programó un juego en el que aparecía un estadio. En el estadio había una típica pantalla de cine que mostraba el campo de juego (Que era el propio buffer de pantalla, el map -1). Había una serie de parpadeos extraños, quizás debido a que el contenido del buffer se dibujaba en tamaño reducido sobre el propio buffer a cada frame... Espero que se entienda lo que hizo mi amigo y el problema que tenía, ¿Sabéis algo al respecto?

Si hace falta le pido el juego y os lo subo :P
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

#3
Raro, pensé que el mapa de fondo de pantalla era el file=0 y graph=0 (al menos recuerdo que siempre fué así). Probaré.

===========

Sigue dando problemas: aleatoriamente se cuelga. E incluso, una vez dibujada una línea, al soltar el ratón, en ocasiones (normalmente en ángulos próximos a 270) la linea se mueve ligeramente (cuando, como se puede ver, no se está haciendo nada sobre ella).

Si necesitas el código completo, me mandas un MP y te doy un enlace (aunque está con el código ligeramente modificado, para usar clear_screen).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

No era graph = 0 seguro, porque un proceso al que no le asignas gráfico tiene graph = 0 y no muestra nada :P

Sube el código y le echamos un ojete Drumpi.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

#5
repito, drawing_map( -1, 0 )

para la proxima podra ser -1, -1, pero por ahora es -1, 0 (o mejor dicho, primer parametro cualquier numero negativo, 2do parametro cualquier numero de 0-999 ).
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Wind, el código no puedo publicarlo porque es en el juego del concurso donde he encontrado este comportamiento "extraño" y me lo prohiben las normas, así que sólo se lo puedo pasar a una persona de confianza por MP.

Insisto en decir que uso la r131, y que ignoro los cambios hechos hasta la actual (la última que vi era la r144).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Pues pásalo por MP/mail, en su día usé mucho el delete_draw con el visor 3D, tuve algún problemilla para borrar lineas.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es