酒吧应该在5秒后缓慢填满,但用户不应该在五秒钟内点击它。我将如何同时实现这两件事?
amount = 1
barlength = 102
while True:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
(x, y) = pygame.mouse.get_pos()
if x < 200 and x > 100 and y < 200 and y > 100 and amount > 0:
currenttime = time.clock()
print (currenttime)
while time.clock() < currenttime + 5:
#untilfull = timez/barlength
pygame.draw.rect(DISPLAYSURF, (0, 0, 0), pygame.Rect(20, 20, barlength, 40))
答案 0 :(得分:1)
您无法在游戏循环中执行任何操作,以防止循环在一段时间内运行。您必须将绘图代码移动到事件循环之外。否则,这将导致您的游戏冻结到操作系统。您需要在循环外部或作为事件的结果(例如按特定键)设置currenttime
的值。不要使用while
循环来检查时间,只需使用普通的if
语句即可。因为游戏循环(外部while
循环)不断运行,if
语句将不断运行。
至于使条长度增长,将条形长度乘以自currenttime
以来的进展时间并除以5.
另外,我建议使用time.time()
来分配currenttime
,这只是当前的unix时间戳,以秒为单位。
像...一样的东西。
pygame.Rect(20, 20, int(barlength * (time.time() - currenttime) / 5), 40)