一、简易版
这种实现方式,最终只是在终端打印出event.key的值以及其类型。
import pygame,sys
def run_game():
'''这个函数能够在我们按下键盘按键的时候打印出event.key以及其数据类型'''
pygame.init()
screen=pygame.display.set_mode((100,100))
pygame.display.set_caption('实验')
#上面三行创建了一个非常简单的pygame游戏窗口。
# 下面的代码本身用不到这个窗口,但是pygame要求我们必须创建。
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
#以上设置了退出的方法,否则那个小窗口无法关闭,程序会一直循环
elif event.type==pygame.KEYDOWN:
print(event.key)
print(type(event.key))
#上面三行是最重要的。当我们按下键盘上的任意按键,都会在终端打印
#出event.key的值以及其数据类型
run_game()
终端:107
<class 'int'>
110
<class 'int'> #我按的两个键分别是k和n
二、进阶版
这次我希望能够利用上我们创建的窗口,让event.key的值直接显示在窗口的正中央。
import pygame,sys
def set_position(textsurface,screen_rect):
'''这个函数用于获得当前要显示的文字的外接矩形并将其设置在窗口正中央'''
textrect=textsurface.get_rect()
textrect.centerx=screen_rect.centerx
textrect.centery=screen_rect.centery
return textrect
def run_game():
'''这个函数完成了从创建窗口到把event.key的值显示在窗口中央的全过程'''
pygame.init()
screen=pygame.display.set_mode((900,600))
pygame.display.set_caption('Keyboard')
screen_rect=screen.get_rect()
#获取窗口矩形
text='Ready? Go!'
#上面的文字是程序一运行就显示在窗口中央的
textsurface=pygame.font.Font('C:\\Windows\\Fonts\\simfang.ttf',88).render(text,True,(255,0,0))
#这个对象非常重要,不同于外星人入侵中把图像显示在窗口中,这次我们要把文字显示在窗口中
#所以我们要创建一个文字对象。创建的方法是先实例化Font类,参数是字体和字号,然后用实例的方法
#render,接收的参数是要显示的文字text,边缘光滑设为True,以及文字的颜色(我设成了红色)
textrect=set_position(textsurface,screen_rect)
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.KEYDOWN:
text=str(event.key)
#按下任意按键,都要把文字改为event.key的值,注意一定要变成字符串,否则会报错
textsurface=pygame.font.Font('C:\\Windows\\Fonts\\simfang.ttf',88).render(text,True,(255,0,0))
textrect=set_position(textsurface,screen_rect)
screen.fill((255,255,255))
#窗口设为白色
screen.blit(textsurface,textrect)
#把文字对象放到我们规定的位置上
pygame.display.flip()
#显示最新的窗口及文字
run_game()
运行效果截图: