Pygame教程07:键盘常量+键盘事件的2种捕捉方式

------------★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('方向下键,被按下')

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

相关推荐
YiSLWLL5 分钟前
Django+Nginx+uwsgi网站使用Channels+redis+daphne实现简单的多人在线聊天及消息存储功能
服务器·数据库·redis·python·nginx·django
陈王卜6 分钟前
django+boostrap实现注册
python·django
超甜的布丁mm16 分钟前
【图像检测】深度学习与传统算法的区别(识别逻辑、学习能力、泛化能力)
图像处理·人工智能·python·深度学习·算法·视觉检测·卷积神经网络
平行的时光线42 分钟前
学习python的第十三天之函数——函数的返回值
python
咸芝麻鱼1 小时前
Django数据迁移出错,解决raise NodeNotFoundError问题
后端·python·django
Sinsa_SI2 小时前
2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析
开发语言·python·等级考试·电子学会·考级
关山月3 小时前
使用Python可视化展示排序算法
后端·python
不惑_3 小时前
【Python入门第七讲】列表(List)
开发语言·python·list
雪的期许3 小时前
Python/GoLang/Java 多环境管理工具 pyenv/goenv/jenv
开发语言·python·策略模式
2401_890666133 小时前
(免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统
java·python·django·flask·node.js·html·课程设计