如何将变量放入pygame密钥检测器



我正在制作一个等待用户按键的函数。有没有一种简单的方法可以将变量设置为我想要按下的键,然后让计算机等待该键?

wait_for_key("SPACE")

上面是我调用函数。

def wait_for_key(key):
pressed=0
while pressed==0:
keys=pygame.key.get_pressed()
if keys[pygame.K_key]:
pressed=1

但在这里,计算机无法识别K_key。我试着使用括号,甚至使用.format方法,但都不起作用。

如果不处理循环中的事件,

pygame.event.get()将不起作用。分别参见pygame.event.get()pygame.event.pump():

对于游戏的每一帧,您都需要对事件队列进行某种调用。这样可以确保您的程序可以在内部与操作系统的其余部分进行交互。

def wait_for_key(key):
pressed=0
while pressed==0:

pygame.event.pump()

# [...]


如果要等待korSPACE,则必须将密钥pygame.K_SPACE传递给wait_for_key(请参见pygame.key(。测试参数key:的状态

wait_for_key(pygame.K_SPACE)
def wait_for_key(key):
pressed=0
while pressed==0:
pygame.event.pump()
keys=pygame.key.get_pressed()
if keys[key]:
pressed=1

但是,如果您只想了解是否按下了某个键,您可以使用KEYDOWN事件(请参阅pygame.event(:

def wait_for_key(key):
pressed=0
while pressed==0:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == key: 
pressed = 1

pygame.key.name()返回密钥标识符的名称。如果您想将密钥的名称传递给函数wait_for_key:,请使用它

wait_for_key("space")
def wait_for_key(key_name):
pressed=0
while pressed==0:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if pygame.key.name(event.key) == key_name: 
pressed = 1

您可以使用getattr和字符串格式来执行此操作:

key = "SPACE"
>>> getattr(pygame, f"K_{key}")
32

最新更新