我正在使用图形模块参考“graphics.py”
你如何编写一个函数,如果用户在一个圆圈内点击它应该返回 True,否则它应该返回 False。
我不太确定如何开始。我想测试用户的点击是否在一个形状内。
我正在使用图形模块参考“graphics.py”
你如何编写一个函数,如果用户在一个圆圈内点击它应该返回 True,否则它应该返回 False。
我不太确定如何开始。我想测试用户的点击是否在一个形状内。
使用 getMouse()。这会在用户单击时暂停,然后返回鼠标在窗口中的位置(作为点)。checkMouse() 将返回鼠标的位置,而无需单击。
例如:
win = GraphWin('Example Window', 100, 100)
mousePos = win.getMouse()
现在用它来确定用户是否点击了一个圆圈:
def isClicked(circle, mousePos):
distance = sqrt(((mousePos.x - circle.x) ** 2) + ((mousePos.y - circle.y) ** 2))
return distance < circle.radius
那将是你的功能。
将使用该函数的代码示例:
from graphics import *
from math import sqrt
def isClicked(circle, mousePos):
distance = sqrt(((point.x - circle.x) ** 2) +
((point.y - circle.y) ** 2))
return distance < circle.radius
def main():
win = GraphWin('Example Window', 100, 100)
circle = Circle(Point(50,50), 25)
circle.setFill('blue')
circle.draw(win)
mousePos = win.getMouse()
if isClicked(circle, mousePos):
print "You clicked in the circle!"
else:
print "You clicked outside the circle!"
main()
有没有不使用“从数学导入排序”的另一种方法?
从字面上理解您的请求,并修复 Dardar Fishcake 示例中的错误,我们可以这样做:
from graphics import *
def isClicked(circle, point):
center = circle.getCenter()
distance = ((point.getX() - center.getX()) ** 2 + (point.getY() - center.getY()) ** 2) ** 0.5
return distance < circle.radius
def main():
win = GraphWin('Example', 100, 100)
circle = Circle(Point(50, 50), 25)
circle.setFill('blue')
circle.draw(win)
while True:
mousePos = win.getMouse()
if isClicked(circle, mousePos):
print("You clicked in the circle!")
break
else:
print("You clicked outside the circle!")
win.close()
main()
这里我们代x ** 0.5
入sqrt(x)
. 示例逻辑也略有变化——这个将继续接受点击,直到你点击圆圈。