《Python和Pygame游戏开发指南》——2.4 游戏循环和游戏状态

简介:

本节书摘来自异步社区《Python和Pygame游戏开发指南》一书中的第2章,第2.4节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.4 游戏循环和游戏状态


screenshot

第7行是一个while循环,它有一个直接为True值的条件。这意味着它不会因为该条件求得False而退出。程序执行退出的唯一方式是执行一条break语句(该语句将执行移动到循环之后的第一行代码)或者sys.exit()(它会终止程序)。如果像这样的一个循环位于一个函数中,一条return语句也可以使得执行退出循环(同时退出函数的执行)。

本书中的游戏,其中都带有这样的一些while True循环,并且带有一条将该循环称为“main game loop”的注释。游戏循环(game loop,也叫作主循环,main loop)中的代码做如下3件事情。

1.处理事件。

2.更新游戏状态。

3.在屏幕上绘制游戏状态。

游戏状态(game state)只不过是针对游戏程序中用到的所有变量的一组值的一种叫法。在很多游戏中,游戏状态包括了记录玩家的生命值和位置、敌人的生命值和位置、在游戏板做出了什么标记、分数值或者轮到谁在玩等信息的变量的值。任何时候,如玩家受到伤害(这会减少其生命值),敌人移动到某个地方,或者游戏世界中发生某些事情的时候,我们就说,游戏的状态发生了变化。

如果你已经玩过那种允许你存盘的游戏,“保存状态(save state)”就是你在某个时刻所存储的游戏状态。在大多数游戏中,暂停游戏将会阻止游戏状态发生变化。

由于游戏状态通常是作为对事件的响应而更新(例如,点击鼠标或者按下键盘),或者是随着时间的流逝而更新,游戏循环在一秒钟之内会不断地、多次检查和重复检查是否发生了任何新的事件。在主循环中,就有用来查看创建了哪个事件的代码(使用Pygame,这通过调用pygame.event.get()函数来做到)。在主循环中,还有根据创建了哪个事件而更新游戏状态的代码。这通常叫作事件处理(event handling),如图2-3所示。


screenshot

相关文章
|
3天前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
27天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
31 4
|
2月前
|
Java 索引 Python
【10月更文挑战第19天】「Mac上学Python 30」基础篇11 - 高级循环技巧与应用
本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()与zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。
66 5
|
2月前
|
Python
Python 循环语句的高级应用与深度探索
本文深入探讨了Python中循环语句的高级应用,包括`for`循环遍历字典获取键值、同步遍历多个序列,以及`while`循环结合条件判断和异常处理。通过嵌套循环实现了矩阵乘法,并介绍了如何优化循环以提升程序性能。示例代码展示了这些技术的实际应用。
50 15
|
2月前
|
数据安全/隐私保护 Python
Python循环语句
【10月更文挑战第7天】
|
2月前
|
IDE 开发工具 Python
Python扑克游戏编程---摸大点
Python扑克游戏编程---摸大点
|
2月前
|
Python
Python 游戏开发实战:从入门到精通
本文介绍利用Python与Pygame库进行游戏开发的基础知识。Pygame是专为游戏设计的Python库,提供了丰富的功能简化游戏开发流程。文中首先指导读者完成Pygame库的安装,并通过示例代码演示了游戏窗口创建、基本图形绘制及用户输入处理等核心概念。此外,还展示了如何通过定义类来组织游戏对象,帮助读者更高效地管理游戏代码。适合初学者入门Python游戏开发。
95 1
|
3月前
|
Python
python编写下象棋游戏|4-14
python编写下象棋游戏|4-14
|
3月前
|
Python
Python 中如何循环某一特定列的所有行数据
Python 中如何循环某一特定列的所有行数据
|
2月前
|
Java C++ Python
【Python】循环语句(while、for)、continue、break
【Python】循环语句(while、for)、continue、break
39 0

热门文章

最新文章

下一篇
无影云桌面