在 Pygame 内仅按键一次
Press Key Only Once in 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
您需要在应用程序循环之前初始化 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
# [...]
我正在尝试做一个寻路算法可视化工具,我希望通过按 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
您需要在应用程序循环之前初始化 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
# [...]