Python培训:pygame事件处理机制详解

pygame文档学习之key 当按下和松开键盘时会触发pygame.event.KEYDOWN和pygame.event.KEYUP事件消息。消息包含。 阅读详情

游戏需要与玩家交互,因此它必须能够接收玩家的操作,并根据玩家操作有针对性地做出响应。程序开发中将玩家会对游戏进行的操作称为事件(Event),根据输入媒介的不同,游戏中的事件分为键盘事件、鼠标事件和手柄事件等。pygame在子模块locals中对事件进行了更加细致的定义,键盘事件、鼠标事件及其产生途径和参数如下表所示。

由表上表可知,pygame.locals中的键盘事件分为KEYDOWN和KEYUP.这两个事件的参数描述如下。

(1)unicode:记录按键的Unicode值。

(2)key:按下或放开的键的键值,键值是一个数字,但为了方便使用,pygame中支持以K_xx来表示按键,例如,字母键表示为K_a、K_b等,方向键表示为K_UP、K_DOWN、K_LEFT、K_RIGHT,ESC键表示为K_ESCAPE(更多按键表示请参见pygame手册)。

(3)mod:包含组合键信息,例如mod&KMOD_CTRL为真,表示用户在按下其他键的同时按下了Ctrl键。类似的还有KMOD_SHIFT、KMOD_ALT。

Pygame.locals中的鼠标事件分为MOUSEMOTION、MOUSEBUTTONDOWN、MOU SEBUTTONUP,这3个事件的参数描述如下。

(l)pos:鼠标操作的位置,该参数是一个包含横坐标x和纵坐标y的元组。

(2)rel:当前位置与上次产生鼠标事件时鼠标指针位置间的距离。

(3)buttons:一个含有3个数字的元组,元组中数字的取值只能为0或1,3个数字依次表示左键、滚轮和右键。若仅移动鼠标,则buttons的值为(1,0,0);若鼠标移动的同时单击鼠标的某个按键,元组中与该键对应的值更改为1,例如按下鼠标左键,buttons的值为(1,0,0)。

(4)button:整型数值,1表示单击鼠标左键,2表示单击滚轮,3表示单击右键,4表示向上滑动滚轮,5表示向下滑动滚轮。

程序可通过pygame子模块event中的type属性判断事件类型,通过get()函数获取当前时刻产生的所有事件的列表。当然,并非事件列表中的事件都需要关心和处理,程序通常在循环中遍历事件列表,将其中的元素与需要处理的事件常量进行比对,若当前事件为需要处理的事件,再对其进行相应操作。

在程序7_pg_test.py中添加事件处理代码,具体如下所示:

````
#获取点击事件,rect.collodepoint(),判断点击位置
while True:
    FPSCLOCK.tick (FPS)
    for event in pygame.event.get():
         if event.type == MOUSEBUTTONUP:            #如果有鼠标放开事件
             if blockRect.collidepoint(event.pos): #净如果点击的是方块
                 print('点击了方块')
             elif autoRect.collidepoint (event.pos):
                 print('点击了按钮')
             else:
                 print('点击了空白区域')
elif event.type == KEYUP:#如果有按键放开事件
             if event.key in (K_LEFT,K_a):
                 print('←')
             elif event.key in (K_RIGHT, K_d):
                 print('→')
             elif event.key in (K_UP, K_w):
                 print('↑')
             elif event.key in (K_DOWN, K_s):
                 print('↓')
             elif event.key ==K_ESCAPE:
                 print('退出游戏')
                 pygame.quit()
pygame.quit()

以上代码在while循环中通过for 循环遍历事件,对每层for循环取出的事件event进行判断,若当前事件为鼠标放开事件(MOUSEBUTTONUP),说明鼠标按键曾被按下,此时使用Rect类的collidepoint()方法判断点击的位置event.pos与方块、按钮的关系,输出相应信息;若当前事件为按键放开事件(KEYUP),说明键盘按键曾被按下,此时根据event.key属性判断曾被按下的具体按键,根据按键打印相应的信息,或退出程序。执行程序,依次执行循环中的判断条件,程序打印结果如下:

·pypygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
<rect (290, 210, 60, 60)>
点击了方块
点击了按钮
点击了空白区域
退出游戏
←
→
↑
↓

此处的示例仅为展示游戏开发中的事件处理流程,并未详细讲解如何选择要处理的事件以及事件的详细处理,皆因需求决定程序走向,程序代码总是与程序的功能息息相关。 

秒会Pygame:键盘移动和鼠标点击移动物体的方法(含完整的代码) 小白秒会Pygame:键盘移动和鼠标点击移动物体的方法(含完整的代码),预备知识 pygame的基本函数介绍,键盘控制物体移动事件,在屏幕上初始化一个外星人,用上、下、左、右键控制外星人移动;鼠标点击控制物体移动事件,在屏幕上初始化一个外星人,点击鼠标使外星人移动到鼠标点击的地方;鼠标移动的同时画彩色小球,随着鼠标的移动,每移动以下,在移动后的位置画出颜色随机的小球 阅读详情

相关推荐

python pygame事件与事件处理

游戏需要与玩家交互,因此它必须能够接收玩家的操作,并根据玩家的不同操作做出有针对性的响应。程序开发中将玩家会对游戏进行的操作称为事件(Event),根据输入媒介的不同,游戏中的事件分为键盘事件、鼠标事件和手柄事件等。事件产生途径参数解释KEYDOWN键盘上的按键被按下unicode记录安静Unicode值key按下或放开的键的键值mod包含组合键信息KEYUP键盘上的键被放开keymod鼠标移动pos鼠标指针操作的位置,包含(x,y)rel。

笨笨轻松熊的博客 1863

pygame按键对应

KeyASCII ASCII Common Name K_BACKSPACE \b backspace K_TAB \t tab K_CLEAR clear K_RETURN \r return K_PAUSE pause K_ESCAPE ^[

rest_in_peace的博客 1万+

Python中国象棋开发避坑指南:Pygame字体渲染与中文显示的那些坑

本文深入探讨了使用Pygame开发中国象棋游戏时,在字体渲染与中文显示方面遇到的常见问题与解决方案。文章详细分析了Pygame字体系统的跨平台兼容性挑战,提供了构建健壮字体加载策略的完整代码,并分享了优化渲染质量与性能的实用技巧,帮助开发者有效规避开发陷阱。

l3m4n的博客 496

Pygame详解(四):event 模块

pygame.event 用于处理事件与事件队列的 Pygame 模块。 函数 pygame.event.pump()  —  让 Pygame 内部自动处理事件 pygame.event.get()  —  从队列中获取事件 pygame.event.poll()  —  从队列中获取一个事件 pygame.event.wait()  —  等待并从队列中获取一个事件 pygame...

来自江南的你的博客 4万+

Python游戏开发Pygame——《Python游戏开发Pygame

Pygame是一个用于编写视频游戏的Python模块集。它包含了图像、声音、事件、碰撞检测等用于开发游戏的多种功能。Pygame是跨平台的,可以在Windows、MacOS和Linux等操作系统上运行。由于其强大的功能和易用性,Pygame已经成为了许多Python程序员开发游戏的首选工具。Pygame作为一款功能强大、灵活易用的Python游戏开发库,在游戏开发领域具有广泛的应用前景和巨大的潜力。通过不断探索和实践,开发者们可以利用Pygame创造出精彩纷呈的游戏作品,并推动游戏开发技术的不断进步和发展。

Python老吕的博客 2026

pygame游戏_用pythonpygame游戏编程入门画图实例

上一节中介绍了各种用于画图的函数,为了进一步加深印象,我们通过一个实例来把这些功能整合到一起。#!/usr/bin/env pythonimport pygamefrom pygame.locals import *from sys import exitfrom random import *from math import pipygame.init()screen = pygame...

weixin_39619858的博客 285

为什么顶尖公司都在用Pygame做原型?揭秘背后的技术选型逻辑与落地案例

auto-generated

IterStream的博客 699

天津python培训视频

Python现在发展的大方向比较多,数据挖掘、爬虫、运维是目前需求量比较大的,而且python语法简单、功能强大,零基础入门学习心理压力和学习压力也不会很大,这也是越来越多人学习python的原因,外加今年杭州已经将python列入课程内容中,往后python会越来越大众化。 天津python培训 今天诚筑说小编给大家详细地介绍一下整个python学习路线,希望对新手小白能有一些帮助。 Python核心编程 搭建环境:先给你的电脑安装python环境是我们需要做的事情。Python安装,PIP网

weixin_63757190的博客 96

Python语言的游戏开发

随着计算机技术的迅猛发展,游戏产业成为了一个蓬勃发展的领域。越来越多的开发者选择使用Python进行游戏开发Python是一种高层次、易于学习的编程语言,其简洁的语法和强大的库支持使其成为初学者和专业开发者的理想选择。在本文中,我们将深入探讨Python在游戏开发中的应用,包括其优势、流行的游戏开发框架、实际案例以及未来的发展前景。

2501_90494605的博客 832

python培训机构 天津

Python现在发展的大方向比较多,数据挖掘、爬虫、运维是目前需求量比较大的,而且python语法简单、功能强大,零基础入门学习心理压力和学习压力也不会很大,这也是越来越多人学习python的原因,外加今年杭州已经将python列入课程内容中,往后python会越来越大众化。 天津python培训 今天诚筑说小编给大家详细地介绍一下整个python学习路线,希望对新手小白能有一些帮助。 Python核心编程 搭建环境:先给你的电脑安装python环境是我们需要做的事情。Python安装,PIP网

weixin_63757190的博客 270

Python游戏编程实战:100个小游戏源码解析与学习路径规划

Python作为一门易学易用的编程语言,其核心语法和数据结构是初学者入门的关键。通过理解变量、循环、函数和列表等基础概念,开发者可以掌握程序运行的基本原理。在工程实践中,将这些原理应用于具体项目能显著提升技术能力,而游戏开发正是绝佳的实践场景。它融合了算法逻辑、状态管理和用户交互,让学习过程更具趣味性和目标感。本文聚焦于利用Python游戏项目进行高效学习,通过分析贪吃蛇、2048等经典案例的源码,深入探讨游戏循环、碰撞检测和矩阵操作等关键技术,并结合Pygame库的应用,为不同阶段的开发者规划了一条从模仿

weixin_30522183的博客 360

探索ApplePy:Python中重拾经典Apple ][的魅力

探索ApplePy:Python中重拾经典Apple ][的魅力 项目介绍 在数字历史的长河中,总有那么一些产品因其独特性和影响力而被铭记。对于计算机爱好者而言,Apple ][无疑是这样一个传奇。如今,借助ApplePy这个开源项目,我们得以在一个全新的视角下重温这一经典。由James Tauber创建并经过多次更新完善,ApplePy允许我们在现代环境中运行Apple ][模拟器,仅需Py...

gitblog_00007的博客 460

python培训班 北京-终于知道北京python基础培训机构

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。【课程简介】python全栈+...

weixin_37988176的博客 430

Python游戏编程实战:30个小游戏从入门到进阶

Python编程学习常面临语法枯燥、项目无从下手的困境。通过游戏开发这一直观有趣的应用场景,可以将变量、循环、函数等基础概念与事件驱动、碰撞检测等核心原理紧密结合,有效提升编程思维和工程实践能力。利用Pygame等图形库,开发者能快速构建贪吃蛇、飞机大战等经典游戏,理解游戏主循环、精灵管理和状态更新等关键技术。这种从概念到实践的学习路径,不仅适用于Python初学者夯实基础,也为后续开发更复杂的应用提供了扎实的练手机会。通过复现并魔改小游戏源码,可以深入掌握调试技巧和模块化设计,完成从“读代码”到“写代码”

weixin_30907935的博客 316

回龙观 python培训

序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。【课程简介】 python全栈+人工智能课程 1门语言搞定6大主流IT需求! Web应用开发 服务器端编程,具有丰富的Web开发框架,如Django和TurboGears,快速

weixin_63757190的博客 114

Python和LangChain复刻斯坦福AI小镇:手把手教你搭建自己的Generative Agents沙盒

本文详细介绍了如何使用Python和LangChain构建Generative Agents沙盒环境,从理论到实践逐步实现智能体的记忆流、反射机制和计划生成。通过核心工具链配置、Agent架构设计、沙盒环境构建和多Agent交互实现,帮助开发者搭建自己的模拟仿真系统,体验数字居民的自主行为。

weixin_31124163的博客 280

python开发技术详解pdf下载_python开发技术详解附源码-python开发技术详解电子书pdf下载高清去水印版-精品下载...

Python开发技术详解适合Python爱好者、大中专院校的学生、社会培训班的学生以及用Python语言进行系统管理、GUI开发、Web开发、数据库编程、网络编程的人员使用。内容提要Python是目前流行的动态脚本语言之一。本书共27章,由浅入深、全面系统地介绍了利用Python语言进行程序开发的知识和技巧,包括Python的安装和环境配置、Python的基本语法、模块和函数、内置数据结构、字符串...

weixin_39835965的博客 257

推荐7个Python免费练习项目,从基本功到进阶,新人收藏_python练习项目

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

2401_84296884的博客 1099
上一篇: 软件测试培训:等价类划分法概述
下一篇: 软件测试的流程是什么?软件测试的基本流程
让你五行代码
博客等级 码龄6年 2万+粉丝 · 163原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值