首页 > 解决方案 > 限制在pygame中可以按下一个键的次数

问题描述

我正在用 pygame 制作一个简单的骰子游戏,我试图只允许最多按下空格键 5 次,直到游戏完成并显示分数。这是我的代码片段:

...

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

    for i in range (5): #number of wanted rounds
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                dice1.roll = True #rolls dice
                dice2.roll = True #rolls dice
                player_one.new_score(dice1_set) #calculates P1 new score
                player_two.new_score(dice2_set) #calculates P2 new score

但是,这仍然允许按任意次数的空格键,并且无论何时按下骰子仍然会滚动。如何确保在按下空格键五次后,再次按下它不会使骰子再次开始滚动,而是可以开始打印分数等?

谢谢!

标签: pythonpygame

解决方案


您需要某种计数器或标志来知道何时停止掷骰子或通常触发或停止某些动作。像这样的工作:

if event.type == pg.KEYDOWN:
    if event.key == pg.K_SPACE and SPACE_COUNTER < 5:
        SPACE_COUNTER +=1

    else:
        print("PUT YOUR CODE FOR SCORE RESET")

    if event.key == pg.K_RETURN and SPACE_COUNTER >= 5:
        SPACE_COUNTER = 0

我假设所有这些都发生在你的内部main_loop所以SPACE_COUNTER是全局变量,它被定义为SPACE_COUNTER = 0循环之外。最后一行用于重新启动变量,当您按 Enter 并且计数器已经在 5 上时,它会将其重置为 0 您也可以单独创建用于计数的函数。希望这可以帮助。


推荐阅读