Lo más complejo de esta rutina es calcular el radio de la circunferencia a partir de dos puntos seleccionados en pantallas.
Para ello, utilizo el teorema de pitágoras, y apoyándome en las funciones matemáticas puestas anteriormente calculo el radio. Esto lo programé ya en la función puesta anterirometne dist_pixel.
En este caso para que quede3 más elegante, el programa incrementa el color por cada circulo.
Se puede bajar el ejemplo compilado en el enlace
EJ_CIRCL.ASM
; Copyright (C) 2013 José Ángel Moneo Fernández ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; You should have received a copy of the GNU General Public License ; along with this program. If not, see <http://www.gnu.org/licenses/>.
include main.mac
include stdio.mac
include mouse.mac
include graphics.mac
include math.mac
.model compact,pascal
.stack 200
.data
x0 dw 100
y0 dw 100
x1 dw 90
y1 dw 90
radio dw 0,0
color dw 1
.code
principal proc far
main
modovideo 12h ;inicia graficos
resmouse ;reinicia ratón
mouse on ; activa rarón
punto1:
getmouse ;espera EST+ SIN PULSAR
cmp ax,0
jne punto1
pulsar1:
getmouse ;verifica espera pulsación raton
cmp ax,2 ;salir?
jne sig1
jmp fuera
sig1:
cmp ax,1 ;boton izquierdo?
jne pulsar1
getmousex
mov x0,ax
getmousey
mov y0,ax
punto2:
getmouse ;espera soltar
cmp ax,0
jne punto2
pulsar2:
getmouse ;verifica espera pulsación raton
cmp ax,2 ;salir?
jNe sg1
JMP FUERA
SG1:
cmp ax,1 ;boton izquierdo?
jne pulsar2
getmousex
mov x1,ax
getmousey
mov y1,ax
dist_pixel x0,y0,x1,y1
mov radio,ax
mouse off
mov ax,color ;incremeta color en cada circulo
inc ax
and ax,0fh
mov color,ax
circle x0,y0,radio,color
mouse on
jmp punto1
fuera:
modovideo t80col
resmouse
mouse off
exit 0
principal endp
end
No hay comentarios:
Publicar un comentario
Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.