Pygame中监控键盘按键的方法

本文介绍了在Pygame中如何处理用户通过键盘产生的事件。首先,用户操作如按键会形成事件并放入队列。接着,通过不断获取事件队列并判断事件类型,特别是键盘事件(KEYUP),根据不同的按键值(如pygame.K_1-K_4)执行不同的游戏逻辑,例如在屏幕上显示对应的数字。代码示例展示了如何响应1-4键并显示数字,以及退出游戏的处理。
摘要由CSDN通过智能技术生成

1 事件与队列

在Pygame中,将用户对游戏的操作叫做“事件”。键盘按键是一种事件,鼠标点击和游戏手柄的输入也是一种事件。在Pygame的子模块locals中,对这些事件进行了定义。当用户通过键盘、鼠标或者游戏手柄对游戏进行操作后,产生的这些事件都会被放在队列中。

2 获取键盘按键的基本原理

在Pygame中获取按键的基本原理就是从队列中取出这些事件,如果是键盘事件,则继续判断用户按下的是哪个键,根据不同的按键进行不同的处理。

3 代码实现

3.1 模块导入

需要导入Pygame模块以及Pygame模块下的locals子模块,代码如下所示:

import pygame
from pygame.locals import *

3.2 从队列中取出事件

从队列中取出事件的代码如下所示:

while True:
   for event in pygame.event.get():

其中,while True语句表示在游戏运行过程当中,能够不断地获取用户产生的事件;pygame.event.get()函数的作用是从队列中取出所有的事件,并将其保存到变量event中。

3.3 判断是否是键盘事件

在while循环中,对获取到的事件event进行判断,代码如下所示:

if event.type == KEYUP:

其中,event.type表示事件的类型,KEYUP在pygame.locals中定义,表示键盘中的某个键被按下。

3.4 根据不同的按键进行不同的处理

当判断出是键盘按键事件后,接下来判断用户按下的是键盘中的哪个按键,根据不同的按键进行不同的处理。我们要实现的功能是用户按下按键中的数字1键,则在屏幕上显示数字1;按下的是数字2键,则显示数字2,以此类推。代码如下所示:

if  event.key == pygame.K_1:
   number = '1'
elif event.key == pygame.K_2:
   number = '2'
elif event.key == pygame.K_3:
   number = '3'
elif event.key == pygame.K_4:
number = '4'

其中,event.key表示按键对应的值,pygame.K_1到pygame_K_4分别表示数字1键到数字4键对应的值。变量number是要显示的内容。

3.4 创建屏幕和要显示的内容

请参考《Pygame显示文字》

4 完整代码

在Pygame中获取键盘输入的完整代码如下所示:i

import pygame
from pygame.locals import *
import sys

pygame.init()
screen = pygame.display.set_mode((600,500))
font = pygame.font.Font(None, 100)
number = '0'

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        elif event.type == KEYUP:
            if event.key == pygame.K_ESCAPE:
                sys.exit()
            elif event.key == pygame.K_1:
                number = '1'
            elif event.key == pygame.K_2:
                number = '2'
            elif event.key == pygame.K_3:
                number = '3'
            elif event.key == pygame.K_4:
                number = '4'
            elif event.key == pygame.K_RETURN:
                number = 'RETURN'

    screen.fill((0,0,200))
    imgText = font.render(number, True, (255,255,255))
    screen.blit(imgText, (300, 200))
    pygame.display.update()

运行该代码后,当按下1~4这四个数字键,在屏幕中就会显示相应的数字,如图1所示。

图1 显示按键对应的数字

Pygame中,可以通过两种方式来捕获键盘事件。以下是两种方法的介绍: 1. 使用pygame.event.get()方法来获取键盘事件。这种方法会返回一个事件列表,其中包含了所有的键盘事件。你可以遍历这个列表,然后根据事件类型来处理键盘按键的操作。下面是一个示例代码: ```python import pygame pygame.init() # 创建一个窗口 window = pygame.display.set_mode((800, 600)) running = True while running: for event in pygame.event.get(): if event.type == pygame.KEYDOWN: # 按键按下事件 if event.key == pygame.K_SPACE: # 按下的是空格键 print("空格键被按下") elif event.type == pygame.KEYUP: # 按键释放事件 if event.key == pygame.K_SPACE: # 释放的是空格键 print("空格键被释放") elif event.type == pygame.QUIT: # 关闭窗口事件 running = False pygame.quit() ``` 2. 使用pygame.key.get_pressed()方法检测键盘按键的状态。这种方法会返回一个包含所有按键状态的列表,你可以通过索引来获取某个按键的状态。如果某个按键被按下,对应的索引位置的值为1,否则为0。下面是一个示例代码: ```python import pygame pygame.init() # 创建一个窗口 window = pygame.display.set_mode((800, 600)) running = True while running: keys = pygame.key.get_pressed() if keys[pygame.K_SPACE]: # 空格键被按下 print("空格键被按下") if keys[pygame.K_ESCAPE]: # ESC键被按下 print("ESC键被按下") for event in pygame.event.get(): if event.type == pygame.QUIT: # 关闭窗口事件 running = False pygame.quit() ``` 这两种方法都可以用来捕获键盘按键事件,你可以根据自己的需求选择其中一种方法来使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值