首页 > 解决方案 > pygame俄罗斯方块发烧模式添加计时器

问题描述

i = 1    ## fever_interval = 3
if score > i * 100:  
  
  pygame.time.set_timer(pygame.USEREVENT, 5)                  
  mino = randint(1, 1)
  next_mino = randint(1, 1)
  next_fever = (i + fever_interval) * fever_score # 피버모드 점수 표시
                      
  # fever time
  if blink:
      screen.blit(pygame.transform.scale(ui_variables.fever_image,
                                      (int(SCREEN_WIDTH * 0.5), int(SCREEN_HEIGHT * 0.2))),
                  (SCREEN_WIDTH * 0.1, SCREEN_HEIGHT * 0.1))
      blink = False
  else:
      blink = True
  i += fever_interval

fever_mode如果您达到特定分数,这是我的代码更改为 5 秒,所以我做了一些计时器 EX)但是这些pygame.time.get_ticks()东西pygame.time.set_timer() 对我不起作用。我该怎么做才能解决它..

标签: pythontimepygametetrispygame-tick

解决方案


时间参数pygame.time.set_timer必须以毫秒而不是秒为单位指定(5000 毫秒 = 5 秒):

pygame.time.set_timer(pygame.USEREVENT, 5)

pygame.time.set_timer(pygame.USEREVENT, 5000)  

最小的例子:闪烁的物体

import pygame
pygame.init()
window = pygame.display.set_mode((200, 200))

pygame.time.set_timer(pygame.USEREVENT, 500)
blink = True

run = True
clock = pygame.time.Clock()
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        elif event.type == pygame.USEREVENT:
            blink = not blink
    
    window.fill(0)
    if blink:
        pygame.draw.circle(window, (255, 0, 0), (100, 100), 80)
    pygame.display.flip()

pygame.quit()
exit()

另请参阅在 python 中同时生成同一对象的多个实例


推荐阅读