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

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


http://www.kler.cn/a/375710.html

相关文章:

  • 使用Vue3DraggableResizable组件实现拖拽拉伸
  • 三、k8s快速入门之Kubectl 命令基础操作
  • 嵌入式硬件电子电路设计(三)电源电路之负电源
  • CTF顶级工具与资源
  • 手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索)
  • PMP冲刺提分秘籍
  • C# 图片工具类,缩略图、加水印、调整光暗和灰度、翻转图片等...
  • npm入门教程1:npm简介
  • django重写响应对象
  • 基于随机森林的智能手机用户行为分类及流量预测分析
  • 【Axure原型分享】颜色选择器——填充颜色
  • 数据采集-Kepware 安装证书异常处理
  • ElementUI el-form表单多层数组的校验
  • C9800 bundle转换为install
  • 测试外包服务 | 从人员外包到测试工具、测试平台,提供全方位的测试解决方案~
  • 如何面对鸿蒙系统
  • Vite学习之模式
  • Edge-labeling graph neural network for few-shot learning in CVPR论文笔记
  • docker 可用镜像服务地址(2024.10.31亲测可用)
  • stm32103c8t6 pwm驱动舵机(SG90)
  • Python实现Tonelli-Shanks算法
  • stm32 如何生成.bin文件-keil fromelf.exe使用
  • 鸿蒙系统不断发展,有与安卓、iOS 形成三足鼎立之势
  • 什么是SMO算法
  • 聊一聊Elasticsearch的基本原理与形成机制
  • java毕业设计之教学资源库系统的设计与实现(springboot)