Python PyGame延迟

时间:2019-06-01 08:41:06

标签: python pygame delay

我有这样的功能:

  def valami() :
        pygame.draw.rect(screen, (0, 255, 0), (0, 0, 20, 20)) 
        pygame.draw.rect(screen, (0, 255, 0), (100, 100, 120, 120)) 
        pygame.draw.rect(screen, (0, 255, 0), (200, 200, 220, 220)) 

这是我的主要while循环:

  while True:
        valami() 

我想每5秒一次绘制这3个矩形。

1 个答案:

答案 0 :(得分:0)

定义一个矩形数组和一个计数器:

rects = [(0, 0, 20, 20), (100, 100, 120, 120), (200, 200, 220, 220)]
counter = 0

counter中绘制依赖于valami的矩形:

def valami() :
    pygame.draw.rect(screen, (0, 255, 0), rects[counter % len(rects)]) 

定义用户事件,请参见(pygame.event)并在主循环之前以5000毫秒(5秒)的间隔启动计时器,请参见pygame.time.set_timer()

mytimerevent = pygame.USEREVENT + 1
pygame.time.set_timer(mytimerevent, 5000) # 5000 milliseconds  

定时器超时后,递增counter。可以通过以0的间隔调用pygame.time.set_timer()来停止计时器:

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        if event.type == mytimerevent: # timer event
            counter += 1
            if counter == 2:
                pygame.time.set_timer(mytimerevent, 0) # stop timer

    screen.fill(0)
    valami()
    pygame.display.flip()

请注意,模(%)运算符会计算整数除法的余数(余数)。
由于rects[counter % len(rects)],如果不停止计时器,矩形将被循环画一个。