Python 如何检查pygame中的可变按键

Python 如何检查pygame中的可变按键,python,Python,我一直在尝试使用pygame创建一个游戏,我正在努力让pygame检查基于变量的按键 到目前为止,我掌握的代码是: import random, pygame, sys from pygame.locals import * points=0 pygame.init() screen = pygame.display.set_mode((600,350)) pygame.display.set_caption("LETTERPRESS") while True: FONT = pygame.

我一直在尝试使用pygame创建一个游戏,我正在努力让pygame检查基于变量的按键

到目前为止,我掌握的代码是:

import random, pygame, sys
from pygame.locals import *
points=0
pygame.init()

screen = pygame.display.set_mode((600,350))
pygame.display.set_caption("LETTERPRESS")

while True:
FONT = pygame.font.SysFont("Comic Sans MS",30)
Letter=random.randint(1,26)
Letters={
    1 :"a",
    2 :"b",
    3 :"c",
    4 :"d",
    5 :"e",
    6 :"f",
    7 :"g",
    8 :"h",
    9 :"i",
    10:"j",
    11:"k",
    12:"l",
    13:"m",
    14:"n",
    15:"o",
    16:"p",
    17:"q",
    18:"r",
    19:"s",
    20:"t",
    21:"u",
    22:"v",
    23:"w",
    24:"x",
    25:"y",
    26:"z"}
label = FONT.render(Letters[Letter],1,(255,0,0))
screen.blit(label,(285,160))
pygame.display.update()
while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_[Letters[Letter]]:
                points +=1
                break
代码中有问题的部分是:

if event.key == pygame.K_[Letters[Letter]]:
另外,如果你有什么方法可以让我清理我的程序,请告诉我


谢谢:)

一个解决办法是将字典更改为

 Letters={
    1 :pygame.K_a,
    2 :pygame.K_b,
    3 :pygame.K_c,
依此类推,然后
if event.key==字母[Letter]:

对于一般的清理,您可以将其带到代码复查中,特别是,我认为没有理由使用字典而不是
字母列表

Letters = [pygame.K_a, pygame.K_b ...]
列表的索引为0,所以您需要记住0是“a”,以此类推

您可以改进
label=FONT.render(字母[Letter],1,(255,0,0))
as
label=FONT.render(chr(字母+65),1,(255,0,0))
,这样就不需要将字母中的值设置为文字字母


最后,如果event.type==pygame.KEYDOWN:行出现语法错误,因为它后面没有缩进的块。

对于第一部分,使用pygame.K_a,实际上不起作用,因为我在行中打印变量:“label=FONT.render(字母[Letter],1,(255,0,0)),至于我使用字典的原因。我只是在用字典,因为这是我学习的第一种方法,我喜欢坚持使用我完全熟悉的东西。第二种方法是在屏幕上打印文本“pygame.K_a”,而不仅仅是“a”。我现在已经解决了这个问题。有一个将数字转换为字母的内置程序,您应该使用它。您对“FONT.render(chr(Letter+65),1(255,0,0))”的修复效果很好,谢谢。在我之前编辑文本时,无意中出现的块只是一个输入错误。我不小心取下了标签,谢谢你的帮助。:)*没有牵连,不是无意的。我只是发布另一条评论,因为我不能编辑那个帖子。