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.
no es drawing_map(0,0)
proba con drawing_map(-1,0)
¿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
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).
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.
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 ).
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).
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.