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