Python 我可以有不同的pygame。为不同的键设置_repeat()值吗?

Python 我可以有不同的pygame。为不同的键设置_repeat()值吗?,python,pygame,Python,Pygame,这里的pygame.key.set_repeat()值允许我平滑地移动玩家精灵,但也会导致比玩家保留空间时创建的子弹多得多。为了防止出现这种情况,我希望空格键的set_repeat值为(1500)。在不创建我自己的解决方案的情况下是否可以实现这一点?我认为最好在创建一个项目符号时设置一个计时器,并且在bullet\u冷却时间毫秒内不允许创建另一个项目符号。这很容易通过函数pygame.time.get_ticks()实现,该函数返回不断增加的毫秒数 pygame.key.set_repeat(1

这里的pygame.key.set_repeat()值允许我平滑地移动玩家精灵,但也会导致比玩家保留空间时创建的子弹多得多。为了防止出现这种情况,我希望空格键的set_repeat值为(1500)。在不创建我自己的解决方案的情况下是否可以实现这一点?

我认为最好在创建一个项目符号时设置一个计时器,并且在
bullet\u冷却时间
毫秒内不允许创建另一个项目符号。这很容易通过函数
pygame.time.get_ticks()
实现,该函数返回不断增加的毫秒数

pygame.key.set_repeat(1, 1)

def game():
    game_running = True

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

        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            player.move_left(3)
        if keys[pygame.K_RIGHT]:
            player.move_right(3)
        if keys[pygame.K_UP]:
            player.move_up(3)
        if keys[pygame.K_DOWN]:
            player.move_down(3)
        if keys[pygame.K_SPACE]:
            create_bullet()
BULLET_冷却时间=500#毫秒
子弹时间=0#子弹发射时的时间
...
如果键[pygame.K_SPACE]:
time_now=pygame.time.get_ticks()#现在几点了?
如果(子弹时间+子弹冷却时间<现在时间):#冷却时间过去了吗?
创建项目符号()
子弹时间=现在时间记住下次射击

对于这类事情,有很多潜在的方法,我认为最好是按照教程进行操作。
BULLET_COOLDOWN = 500    # milliseconds between bullets
bullet_time     = 0      # time when bullet fired

...

if keys[pygame.K_SPACE]:
    time_now = pygame.time.get_ticks()                 # what time is it?
    if ( bullet_time + BULLET_COOLDOWN < time_now ):   # has cooldown past?
        create_bullet()                                   
        bullet_time = time_now                         # remember for next firing