尝试在我的游戏中添加一个不断增长的栏时循环问题

时间:2018-02-11 02:26:57

标签: python python-2.7 pygame

酒吧应该在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))

1 个答案:

答案 0 :(得分:1)

您无法在游戏循环中执行任何操作,以防止循环在一段时间内运行。您必须将绘图代码移动到事件循环之外。否则,这将导致您的游戏冻结到操作系统。您需要在循环外部或作为事件的结果(例如按特定键)设置currenttime的值。不要使用while循环来检查时间,只需使用普通的if语句即可。因为游戏循环(外部while循环)不断运行,if语句将不断运行。

至于使条长度增长,将条形长度乘以自currenttime以来的进展时间并除以5.

另外,我建议使用time.time()来分配currenttime,这只是当前的unix时间戳,以秒为单位。

像...一样的东西。

pygame.Rect(20, 20, int(barlength * (time.time() - currenttime) / 5), 40)