Python PyGame 延迟

标签 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个矩形。

最佳答案

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

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

根据valami中的counter绘制矩形:

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  

计时器到期时增加计数器。可以通过调用 pygame.time.set_timer() 来停止计时器。间隔为0:

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)],如果您不停止计时器,矩形将在循环中绘制一个。

关于Python PyGame 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56405138/

相关文章:

javascript - jquery 延迟更改 css

jquery - 延迟悬停法

python - 整个图像在屏幕上的移动

python - 每当使用 pygame 的鸟和管道 x 位置相等时,我如何写一些东西来改变我在 flappy bird 中的分数?

python - 我何时将类的实例作为 self 传递给方法?

python - 从 json 使用 unixtime 从视频创建多个子剪辑?

python - Pygame如何让背景不断滚动?

javascript - jQuery:延迟 mouseenter 事件(下拉菜单)

python - 如何将参数传递给Jenkins

python - 正则表达式:用 "/"分割字符