Ver la versión completa : [Ayuda] Dudas (muy básicas) GLBASIC
_-Caleb-_
12/09/2010, 12:24
Buenas, a ver si alguien me ayuda, el click de glbasic es la táctil enwiz creo, es así?
En caso de ser así por ejemplo, tengo esta imagen o algo así, como puedo separar la pantalla en diferentes espacios, por ejemplo estos círculos para accionar un evento click diferente en cada uno?
Sorry si es muy básica pero yo soy muy básico en esto :p
Saludos!!
EDITO: YO he dicho lo de la imágen pero también serviría dibujar círculos con el basic eh? o cualquier otra solución pero que se vean círculos en la pantalla :)
cybernoid
12/09/2010, 12:54
Hola,
Lo mas sencillo es que dividas la pantalla en 6 cuadrados imaginarios (colocados en el mismo sitio que los círculos) y que hagas comprobaciones en plan
if (boxcoll(y,x,1,1,cir.x,cir.y,ancho,alto)) then
CLICK()
endif
también podrías hacerlo con mapas de durezas o calculando el radio del circulo.
Tienes la mx,my donde se ha pulsado y los centros de cada círculo cenx,ceny. Puedes calcular la distancia del click al centro de cada círculo. Si la distancia es menor que el radio, el punto está en el círculo.
Function Distancia: mx, my, cenx, ceny
local dist
dist = Sqr ( Pow(mx-cenx, 2) + Pow(my-ceny, 2) )
return dist
Endfunction
Function PtEnCirculo: mx, my, cenx, ceny, radio
If Distancia(mx, my, cenx, ceny) < radio
return true
Else
return false
Endif
Endfunction
Sqr(n) es la raíz cuadrada de n, y Pow(n,2) es el cuadrado de n.
_-Caleb-_
12/09/2010, 18:37
Hola,
Lo mas sencillo es que dividas la pantalla en 6 cuadrados imaginarios (colocados en el mismo sitio que los círculos) y que hagas comprobaciones en plan
if (boxcoll(y,x,1,1,cir.x,cir.y,ancho,alto)) then
CLICK()
endif
también podrías hacerlo con mapas de durezas o calculando el radio del circulo.
Lo miraré a ver que tal
Tienes la mx,my donde se ha pulsado y los centros de cada círculo cenx,ceny. Puedes calcular la distancia del click al centro de cada círculo. Si la distancia es menor que el radio, el punto está en el círculo.
Function Distancia: mx, my, cenx, ceny
local dist
dist = Sqr ( Pow(mx-cenx, 2) + Pow(my-ceny, 2) )
return dist
Endfunction
Function PtEnCirculo: mx, my, cenx, ceny, radio
If Distancia(mx, my, cenx, ceny) < radio
return true
Else
return false
Endif
Endfunction
Sqr(n) es la raíz cuadrada de n, y Pow(n,2) es el cuadrado de n.
En principio me parece mas sencilla la solución anterior, voy a probar ya iré diciendo cosas que yo de programar soy practicamente nulo :P
Saludos y gracias!!!
Es que no es problema de programación, sino de trigonometría pura y dura :lol:
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.