《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。

相关推荐
Allen_LVyingbo8 分钟前
Python常用医疗AI库以及案例解析(2025年版、上)
开发语言·人工智能·python·学习·健康医疗
智能砖头16 分钟前
LangChain 与 LlamaIndex 深度对比与选型指南
人工智能·python
风逸hhh2 小时前
python打卡day58@浙大疏锦行
开发语言·python
烛阴2 小时前
一文搞懂 Python 闭包:让你的代码瞬间“高级”起来!
前端·python
JosieBook3 小时前
【Java编程动手学】Java中的数组与集合
java·开发语言·python
Gyoku Mint4 小时前
深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
人工智能·pytorch·python·深度学习·神经网络·算法·聚类
郭庆汝9 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变12 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络13 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find14 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama