<p>你的<code>draw_circle</code>函数在做两件独立的事情,所以我不确定把它作为一个单独的函数是否有意义。它没有正确更新圆的x和y坐标,因为你总是返回随机坐标,即使你应该返回移动圆的坐标。在下面的代码中,我将该函数的两部分分解为主<code>circle_game</code>函数</p>
<p>我已经把你在正方形内点击的检查换成了在圆形内点击的检查:<code>(mouse.x - circle_x ) ** 2 + (mouse.y - circle_y) ** 2 <= CIRCLE_RADIUS_SQUARED</code></p>
<p>我也不知道<code>totalClicks += random.randint(0,5)</code>想要达到什么目的</p>
<pre><code>import random
from graphics import *
def circle_game():
CANVAS_WIDTH = 600
CANVAS_HEIGHT = 600
CIRCLE_RADIUS = 50
CIRCLE_RADIUS_SQUARED = CIRCLE_RADIUS * CIRCLE_RADIUS
window = GraphWin("Click circles", CANVAS_WIDTH, CANVAS_HEIGHT)
# Draw circle at random location to start game
circle_x = random.randint(0, CANVAS_WIDTH)
circle_y = random.randint(0, CANVAS_HEIGHT)
circle_point = Point(circle_x, circle_y)
circle = Circle(circle_point, CIRCLE_RADIUS)
circle.setFill(color_rgb(200, 0, 0))
circle.draw(window)
total_clicks = 0
inside_clicks = 0
while total_clicks < 10 and inside_clicks < 3:
mouse = window.getMouse()
total_clicks += 1
if (mouse.x - circle_x ) ** 2 + (mouse.y - circle_y) ** 2 <= CIRCLE_RADIUS_SQUARED:
# Click was inside circle so we don't move circle
inside_clicks +=1
else:
# Click was not inside circle so we move circle to mouse location
dx = mouse.x - circle_x
dy = mouse.y - circle_y
circle.move(dx, dy)
circle_x += dx
circle_y += dy
if __name__ == '__main__':
circle_game()
</code></pre>