如何在我的 python 点击游戏中放置计时器,并使圆圈消失?



我正在尝试创建一个鼠标精度游戏,其中屏幕上弹出各种不同大小的圆圈,您的工作是在它们消失之前单击它们在 3 秒内消失之前和计时器在 20 秒后用完之前。

我尝试使用带有 countdown(( 的导入时间,但它无法正常工作。我也不知道如何让圆圈有自己的计时器并使它们消失。我应该怎么做?这是我到目前为止所拥有的:

from turtle import Turtle, Screen
from random import random, randint
CURSOR_SIZE = 20

def my_circle(color):
radius = randint(10, 50)
circle = Turtle('circle', visible=False)
circle.shapesize(radius / CURSOR_SIZE)
circle.color(color)
circle.penup()
while True:
nx = randint(2 * radius - width // 2, width // 2 - radius * 2)
ny = randint(2 * radius - height // 2, height // 2 - radius * 2)
circle.goto(nx, ny)
for other_radius, other_circle in circles:
if circle.distance(other_circle) < 2 * max(radius, other_radius):
break
else:
break
circle.showturtle()
circle.onclick(lambda x, y, t=circle: t.hideturtle())
return radius, circle
screen = Screen()
screen.bgcolor("lightgreen")
screen.title("clicky")
width, height = screen.window_width(), screen.window_height()
circles = []
for _ in range(0, 20):
rgb = (random(), random(), random())
circles.append(my_circle("black"))
screen.mainloop()

不要给每个圆圈一个计时器。相反,有一个整体计时器。创建圆圈时,存储其创建时间,可能与其他信息(如要删除的时间(一起存储。在计时器的每个刻度上,搜索圆圈并删除时间已到的圆圈。您可以通过将循环销毁时间信息存储在优先级队列中来加快搜索速度(请参阅heapq模块(。

这种使用一个计时器并搜索每个时钟周期的列表的技术是 GUI 编程的标准。

最新更新