总览
许多开发人员进入软件开发是因为他们想开发游戏。 并非每个人都可以成为专业的游戏开发人员,但是每个人都可以出于娱乐目的甚至可能自己的利益而制作自己的游戏。 在这个由五部分组成的系列文章中,我将向您展示如何使用Python 3和出色的Pygame框架创建2D单人游戏。
我们将构建经典突破游戏的一个版本。 一切都说完之后,您将清楚地了解创建自己的游戏所需的时间,熟悉Pygame的功能,并拥有一个示例游戏。
以下是我们将实现的功能:
- 简单的通用GameObject和TextObject
- 简单的通用游戏对象
- 简单的通用按钮
- 配置文件
- 处理键盘和鼠标事件
- 砖,桨和球
- 管理桨运动
- 处理球与所有物体的碰撞
- 背景图像
- 声音特效
- 可扩展的特效系统
您不应该期望的是视觉上令人愉悦的游戏。 我是程序员,而不是艺术家。 我更担心代码的美感。 我的视觉设计结果可能会令人震惊。 从好的方面来说,如果您想改进此版本Breakout的外观,则有大量的改进空间。 有了这个可怕的警告,下面是一个屏幕截图:
![游戏界面示例](https://i-blog.csdnimg.cn/blog_migrate/738b9ecf0c3b651db189737eeda63cd6.png)
完整的源代码在这里 。
游戏编程快速入门
游戏是关于在屏幕上移动像素并发出噪音。 几乎所有视频/计算机游戏都具有以下大多数元素。 本文不涉及客户端服务器游戏和多人游戏,它们也涉及很多网络编程。
主循环
游戏的主循环以固定的时间间隔运行并刷新屏幕。 这是您的帧频,它指示事物的平滑程度。 通常,游戏每秒刷新屏幕30到60次。 如果速度变慢,屏幕上的对象将显得生涩。
在主循环内,有三个主要活动:处理事件,更新游戏状态以及绘制屏幕的当前状态。
处理事件
游戏中的事件包括发生在游戏代码控制之外但与游戏操作相关的所有事件。 例如,如果在“突破”中玩家按下左箭头键,则游戏需要将球拍向左移动。 典型事件包括按键(和释放),鼠标移动,鼠标单击(特别是在菜单中)和计时器事件(例如,特殊效果在10秒后失效)。
更新状态
每个游戏的核心是其状态:它会跟踪并在屏幕上绘制的内容。 在“突破”中,状态包括所有积木的位置,球的位置和速度,球拍的位置以及生命和得分。
还有一种辅助状态可以帮助管理游戏:
- 我们现在显示菜单吗?
- 游戏结束了吗?
- 玩家赢了吗?
画画
游戏需要在屏幕上显示其状态。 这包括绘制几何形状,图像和文本。
游戏物理
大多数游戏模拟物理环境。 在“突破”中,