《Python游戏编程入门》注-第4章6

《Python游戏编程入门》的"轮询鼠标"内容介绍了通过轮询鼠标实现实时显示鼠标位置和按键状态的游戏。

1 游戏介绍

实时显示鼠标位置和按键状态的游戏如图1所示。

图1 实时显示鼠标位置和按键状态

从图1中可以看到,游戏界面主要分为上下两部分。其中,上半部分通过鼠标事件的方式获取并显示鼠标位置、移动距离、鼠标按键按下和释放的状态;下半部分通过"轮询鼠标"的方式获取并显示鼠标位置和鼠标按键状态。

2 游戏实现

2.1 通过鼠标事件的方式获取并显示鼠标信息

2.1.1 获取鼠标事件及鼠标信息

在"Pygame编程框架"的while True循环中,获取事件队列中的事件,并判断是否是鼠标事件,在《Python游戏编程入门注-第4章3中》提到,鼠标事件主要包括鼠标移动MOUSEMOTION、鼠标按键按下MOUSEBUTTONDOWN以及鼠标按键释放MOUSEBUTTONUP三种。代码如图2所示。

图2 获取鼠标事件及鼠标信息的代码

其中,mouse_x、mouse_y表示鼠标当前位置的衡中坐标;move_x、move_y表示鼠标移动的距离;mouse_down表示鼠标的哪个按键被按下;mouse_down_x、mouse_down_y表示鼠标按键被按下时位置的横纵坐标;mouse_up表示鼠标的哪个按键被释放;mouse_up_x、mouse_up_y表示鼠标按键被释放时位置的横纵坐标。以上变量在while True循环的外部定义,如图3所示。

图3 鼠标信息变量的定义

相关链接1 鼠标事件的相关知识请参考《Python游戏编程入门注-第4章3》

2.1.2 显示鼠标信息

通过图4所示代码显示鼠标信息。

图4 显示鼠标信息的代码

其中,print_text()是自定义函数,用来在指定位置显示指定信息。以上代码可以实现图1中上半部分的功能。

注意1 图4所示代码在while True循环中,screen.fill()函数之后。

相关链接2 print_text()函数的相关内容请参考《Python游戏编程入门注-第2章1》

2.2 通过"鼠标轮询"获取并显示鼠标信息

2.2.1 "鼠标轮询"获取并显示鼠标位置

"鼠标轮询"获取并显示鼠标位置的代码如图5所示。

图5 "鼠标轮询"获取并显示鼠标位置的代码

其中,第50行代码中的pygame.mouse模块中的get_pos()函数获取鼠标位置的横纵坐标,保存在x和y中;第51行代码显示获取到的数据。

2.2.2 "鼠标轮询"获取并显示鼠标按键信息

"鼠标轮询"获取并显示鼠标按键信息的代码如图6所示。

图6 "鼠标轮询"获取并显示鼠标按键信息的代码

其中,第52行中pygame.mouse模块中的get_pressed()函数获取鼠标的按键信息,保存在变量b1、b2和b3中。这三个变量分别表示鼠标左键、中键和右键的状态,按下键时,值是True,释放键时值是False。

相关推荐
檀越剑指大厂32 分钟前
【Python系列】Python中的`any`函数:检查“至少有一个”条件满足
开发语言·python
程序员黄同学1 小时前
如何使用 Python 连接 MySQL 数据库?
数据库·python·mysql
I_Am_Me_1 小时前
【JavaEE初阶】线程安全问题
开发语言·python
张叔zhangshu2 小时前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
运维&陈同学2 小时前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
新手小袁_J2 小时前
实现Python将csv数据导入到Neo4j
数据库·python·neo4j·《我是刑警》·python连接neo4j·python导入csv·csv数据集导入neo4j
清风ꦿ3 小时前
neo4j 图表数据导入到 TuGraph
python·neo4j·knowledge graph
深度学习lover5 小时前
[项目代码] YOLOv8 遥感航拍飞机和船舶识别 [目标检测]
python·yolo·目标检测·计算机视觉·遥感航拍飞机和船舶识别
水木流年追梦6 小时前
【python因果库实战10】为何需要因果分析
开发语言·python
m0_675988236 小时前
Leetcode2545:根据第 K 场考试的分数排序
python·算法·leetcode