Python从入门到实践习题12-4打印event.key的值的两种答案

一、简易版

这种实现方式,最终只是在终端打印出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()

运行效果截图:

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值