当前位置: 首页 > news >正文

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 来获取被按下的键的标识符。

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() 方法:这个方法返回一个元组,表示当前所有键盘按键的状态(按下或未按下)。你可以通过检查元组中的特定键位来确定哪个键被按下。这种方法对于需要持续监听按键状态的情况很有用,比如实现角色的持续移动。

keys_pressed = pygame.key.get_pressed()  
if keys_pressed[pygame.K_RIGHT]:  # 如果右键被按下  print("Right key is pressed")

3.键盘事件的示例用法:创建了一个游戏窗口,并在窗口中监听了键盘事件,会在窗口显示你所按的键。当按下特定的键(如左键或右键)时,程序会输出相应的信息到控制台。你可以根据需要修改if event.key ==后面的条件,来检测其他键盘事件。

注意一个小细节:当按字母的时候,输入法要切换成英文状态,不然无法显示所按的字母键。使用shift键即可实现中英的来回切换。
在这里插入图片描述

# @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

相关文章:

  • SQL: 触发器/存储过程/游标的操作
  • System类 --java学习笔记
  • 拍立淘API:助力电商企业快速定位目标客户
  • websocket 使用示例
  • 实现QT中qDebug()的日志重定向
  • GPT-prompt大全
  • 【DevOps基础篇】容器化架构基础设施监控方案
  • 20240312-2-贪心算法
  • 基于Qt 和python 的自动升级功能
  • Docker:部署微服务集群
  • 在没有推出硬盘的情况下,重启mac电脑,外接移动硬盘无法加载显示?
  • 国内哪个工具可以平替chatgpt?国内有哪些比较好用的大模型gpt?
  • ‘UnityEngine.Application‘ does not contain a definition for isBatchMode
  • 迷茫了!去大厂还是创业?
  • 从零开始:神经网络(1)——神经元和梯度下降
  • 【译】理解JavaScript:new 关键字
  • Docker入门(二) - Dockerfile
  • echarts花样作死的坑
  • ES2017异步函数现已正式可用
  • ES6 ...操作符
  • JavaScript 基础知识 - 入门篇(一)
  • js继承的实现方法
  • Sass Day-01
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SQLServer之创建数据库快照
  • Theano - 导数
  • Web标准制定过程
  • 闭包--闭包之tab栏切换(四)
  • 当SetTimeout遇到了字符串
  • 服务器从安装到部署全过程(二)
  • 构建二叉树进行数值数组的去重及优化
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 前端_面试
  • 学习JavaScript数据结构与算法 — 树
  • 怎样选择前端框架
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​什么是bug?bug的源头在哪里?
  • ​水经微图Web1.5.0版即将上线
  • # .NET Framework中使用命名管道进行进程间通信
  • (003)SlickEdit Unity的补全
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4)logging(日志模块)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (二)丶RabbitMQ的六大核心
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (篇九)MySQL常用内置函数
  • (七)c52学习之旅-中断
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)重识new
  • **CI中自动类加载的用法总结
  • .NET Core 项目指定SDK版本