------------★Pygame系列教程★------------
Pygame教程01:初识pygame游戏模块
Pygame教程02:图片的加载+缩放+旋转+显示操作
Pygame教程03:文本显示+字体加载+transform方法
Pygame教程04:draw方法绘制矩形、多边形、圆、椭圆、弧线、直线和线条等
Pygame教程05:帧动画原理+边界值检测,让小球来回上下运动
Pygame教程06:Event事件的类型+处理方法+监听鼠标事件
Pygame教程07:键盘常量+键盘事件的2种捕捉方式
Pygame教程08:使用键盘方向键,控制小球,上下左右移动。
键盘事件会涉及到大量的按键操作,比如游戏中的上下左右,或者人物的前进、后退等操作,这些都需要键盘来配合实现。键盘事件提供了一个 key 属性,通过该属性可以获取键盘的按键。Pygame将键盘上的字母键、数字键、组合键等按键以常量的方式进行了定义。
1.常用的按键常量:
2.键盘事件的2种捕获方式
2.1pygame.event.get() 方法:这个方法返回一个包含所有待处理事件的列表。你可以遍历这个列表,检查每个事件的类型,并处理键盘事件。当使用这种方法时,通常需要检查 event.type 是否等于 pygame.KEYDOWN,这表示有键被按下。然后,你可以使用 event.key 来获取被按下的键的标识符。
python
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
# 处理左键按下事件
print("Left key pressed")
2.2.pygame.key.get_pressed() 方法:这个方法返回一个元组,表示当前所有键盘按键的状态(按下或未按下)。你可以通过检查元组中的特定键位来确定哪个键被按下。这种方法对于需要持续监听按键状态的情况很有用,比如实现角色的持续移动。
python
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_RIGHT]:
# 如果右键被按下
print("Right key is pressed")
3.键盘事件的示例用法:创建了一个游戏窗口,并在窗口中监听了键盘事件,会在窗口显示你所按的键。当按下特定的键(如左键或右键)时,程序会输出相应的信息到控制台。你可以根据需要修改if event.key ==后面的条件,来检测其他键盘事件。
注意一个小细节:当按字母的时候,输入法要切换成英文状态,不然无法显示所按的字母键。使用shift键即可实现中英的来回切换。
python
# @Author : 小红牛
# 微信公众号:WdPython
import sys
import pygame
# 初始化pygame
pygame.init()
# 设置窗口大小
screen = pygame.display.set_mode((700, 180))
# 设置窗口标题
pygame.display.set_caption('Pygame Keyboard Event Example')
# 设置楷体字体
font = pygame.font.SysFont('kaiti', 50, bold=False, italic=False)
# 游戏主循环
while True:
# 处理事件队列
for event in pygame.event.get():
if event.type == pygame.QUIT: # 如果收到退出事件,则退出循环
# 关闭游戏
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN: # 如果收到键盘按下事件
# 清空屏幕
screen.fill((0, 0, 0))
# 1.窗口显示所按的键
key_name = pygame.key.name(event.key)
# 渲染文本
text_surface = font.render(f'当前按下的是:{key_name}键', True, (255, 255, 255))
screen.blit(text_surface, (30, 50))
# 2.更新显示
pygame.display.update()
# 3.特殊的键被按下,就会被监听,如下面的上下左右方向键
if event.key == pygame.K_LEFT:
print('方向左键,被按下')
elif event.key == pygame.K_RIGHT:
print('方向右键,被按下')
elif event.key == pygame.K_UP:
print('方向上键,被按下')
elif event.key == pygame.K_DOWN:
print('方向下键,被按下')
完毕!!感谢您的收看
----------★★历史博文集合★★----------