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

《Python游戏编程入门》的第4章是"用户输入:Bomb Cathcer游戏",通过轮询键盘和鼠标设备状态实现Bomb Cathcer游戏。

1 Bomb Cathcer游戏介绍

"4.1 认识Bomb Cathcer游戏"内容介绍了Bomb Cathcer游戏的玩法,即通过鼠标来控制红色"挡板"的移动,让红色"挡板"能够接住从屏幕顶端落下的黄色"炸弹"。每接住一个"炸弹",游戏右上角的"SCORE"即"分数"增加10点;如果没有接住"炸弹",则游戏左上角的"LIVES"即"命"会减1,直到"LIVES"减少到0,游戏结束,如图1所示。

图1 Bomb Cathcer游戏

相关链接1 Bomb Cathcer游戏游戏的代码在《Python游戏编程入门》注-第2章1中介绍的下载地址中。路径是"python游戏编程入门->code->code->chap04->BombCatcher.py"。

2 Pygame事件

"4.2 Pygame事件"内容介绍了Pygame事件的相关知识。

在Pygame中,将用户对游戏的操作叫做"事件",也叫"消息"。键盘按键是一种事件,鼠标点击和游戏手柄的输入也是一种事件。在Pygame的子模块locals中,对这些事件(消息)进行了定义。当用户通过键盘、鼠标或者游戏手柄对游戏进行操作后,产生的这些事件(消息)都会被放在队列中。

3 判断键盘和鼠标是否被按下

"4.2.1 实时事件循环"内容介绍了使用while True循环来判断键盘或者鼠标是否被按下。因为我们不知道玩家何时按下键盘或鼠标,因此要使用while True循环实时判断。在Pygame中键盘或者鼠标是否被按下的基本原理就是从队列中取出这些事件(消息),根据事件(消息)的类型进行判断,如图2所示。

图2 事件(消息)、事件队列以及实时判断事件的关系

3.1 代码框架

使用如图3所示的代码作为判断键盘或者鼠标是否被按下的代码框架。

图3 判断键盘或者鼠标是否被按下的代码框架

图3所示代码创建了一个淡绿色背景的窗口。

相关链接2:图3所示的代码的详细说明,请参考《Python游戏编程入门》注-第2章1。

3.2 通过循环实时判断事件

在图3第8行代码所示的while True循环内部加入如图4所示的代码,从事件队列中取出事件并对事件进行判断。

图4 从事件队列中取出事件并对事件进行判断的代码

其中,第10代码中pygame.event.get()函数的作用是从队列中取出所有的事件,并将其保存到变量event中;第11行代码 通过if语句对事件类型event.type进行判断,QUIT表示程序退出的事件;第12行代码通过pygame.quit()退出pygame;第13行代码通过os.sys.exit()退出游戏程序。当点击了游戏右上角的"×"按键时,QUIT事件将会被放入到队列中,游戏程序从事件队列中取出QUIT事件时,首先退出pygame,之后退出游戏程序。

注意1 使用图4所示代码需要导入os模块。

注意2 QUIT消息是在pygame.locals模块中定义的,因此图3中第2行代码是必须的。

相关推荐
循环过三天7 小时前
3.1、Python-列表
python·算法
青青草原羊村懒大王7 小时前
python基础知识三
开发语言·python
傻啦嘿哟7 小时前
Python高效实现Word转HTML:从基础到进阶的全流程方案
人工智能·python·tensorflow
wu_jing_sheng08 小时前
深度学习入门:揭开神经网络的神秘面纱(附PyTorch实战)
python
Ace_31750887768 小时前
淘宝店铺全量商品接口实战:分类穿透采集与增量同步的技术方案
大数据·数据库·python
LeonDL1689 小时前
基于YOLO11深度学习的电动车头盔检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·深度学习·pyqt5·yolo数据集·电动车头盔检测系统·yolo11深度学习
wxin_VXbishe11 小时前
springboot在线课堂教学辅助系统-计算机毕业设计源码07741
java·c++·spring boot·python·spring·django·php
程序员三藏11 小时前
使用Docker和Selenium构建自动化测试环境
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
CaracalTiger11 小时前
本地部署 Stable Diffusion3.5!cpolar让远程访问很简单!
java·linux·运维·开发语言·python·微信·stable diffusion
api_1800790546012 小时前
【技术教程】Python/Node.js 调用拼多多商品详情 API 示例详解
大数据·开发语言·python·数据挖掘·node.js