首页 > 解决方案 > 在 Pygame 中只按一次键

问题描述

我正在尝试做一个寻路算法可视化工具,我希望通过按 S 键,您将根据鼠标所在的位置放置一个起始节点,但我希望玩家只能执行一次,直到他选择清除板,他可以放置另一个起始节点,因为板是空的,因此他在单个网格上没有多个起始节点,我尝试通过跟踪计数变量来做到这一点,但它不起作用它仍然允许按多次(我不是在谈论 KEYDOWN 和 KEYUP,我希望玩家只按一次,不能再按一次)。如果可能的话,有人可以告诉我如何允许在每个板上只放置一个起始节点,但是当板被清除并清空时,您可以再次放置,但也只能放置一个起始节点。

我的代码尝试片段:

start_count = 0
if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_s and start_count < 1:
        for node in nodes_list:
            node.draw_start_node()
        start_count += 1

标签: countpygamekey

解决方案


您需要start_count在应用程序循环之前初始化一次,而不是在应用程序循环中连续初始化:

start_count = 0

while True:
    # [...]

    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_s and start_count < 1:
                for node in nodes_list:
                    node.draw_start_node()
                start_count += 1

    # [...]

推荐阅读