Python 我可以有不同的pygame。为不同的键设置_repeat()值吗?
这里的pygame.key.set_repeat()值允许我平滑地移动玩家精灵,但也会导致比玩家保留空间时创建的子弹多得多。为了防止出现这种情况,我希望空格键的set_repeat值为(1500)。在不创建我自己的解决方案的情况下是否可以实现这一点?我认为最好在创建一个项目符号时设置一个计时器,并且在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
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