本文已参与「新人创作礼」活动,一起开启掘金创作之路。
pygame 快速入门
目标
- 项目准备
- 使用
pygame
创建图形窗口 - 理解 图像 并实现图像绘制
- 理解 游戏循环 和 游戏时钟
- 理解 精灵 和 精灵组
项目准备
- 新建 飞机大战 项目
- 新建一个 项目
- 导入 游戏素材图片
游戏的第一印象
- 把一些 静止的图像 绘制到 游戏窗口 中
- 根据 用户的交互 或其他情况,移动 这些图像,产生动画效果
- 根据 图像之间 是否发生重叠,判断 敌机是否被摧毁 等其他情况
01. 使用 pygame
创建图形窗口
小节目标
- 游戏的初始化和退出
- 理解游戏中的坐标系
- 创建游戏主窗口
- 简单的游戏循环
可以将图片素材 绘制 到 游戏的窗口 上,开发游戏之前需要先知道 如何建立游戏窗口!
1.1 游戏的初始化和退出
- 要使用
pygame
提供的所有功能之前,需要调用init
方法 - 在游戏结束前需要调用一下
quit
方法
| 方法 | 说明 | | --------------- | --------------------------------------------- | | pygame.init()
| 导入并初始化所有 pygame
模块,使用其他模块之前,必须先调用 init
方法 | | pygame.quit()
| 卸载所有 pygame
模块,在游戏结束之前调用! |
``` import pygame pygame.init()
游戏代码...
pygame.quit() ```
1.2 理解游戏中的坐标系
坐标系
- 原点 在 左上角
(0, 0)
- x 轴 水平方向向 右,逐渐增加
- y 轴 垂直方向向 下,逐渐增加
- 原点 在 左上角
在游戏中,所有可见的元素 都是以 矩形区域 来描述位置的
- 要描述一个矩形区域有四个要素:
(x, y) (width, height)
- 要描述一个矩形区域有四个要素:
pygame
专门提供了一个类pygame.Rect
用于描述 矩形区域
```
Rect(x, y, width, height) -> Rect ```
提示
pygame.Rect
是一个比较特殊的类,内部只是封装了一些数字计算- 不执行
pygame.init()
方法同样能够直接使用
案例演练
需求
- 定义
hero_rect
矩形描述 英雄的位置和大小 - 输出英雄的 坐标原点(
x
和y
) - 输出英雄的 尺寸(宽度 和 高度)
```
herorect = pygame.Rect(100, 500, 120, 126) print("坐标原点 %d %d" % (herorect.x, herorect.y)) print("英雄大小 %d %d" % (herorect.width, hero_rect.height))
size 属性会返回矩形区域的 (宽, 高) 元组
print("英雄大小 %d %d" % hero_rect.size) ```
1.3 创建游戏主窗口
pygame
专门提供了一个 模块pygame.display
用于创建、管理 游戏窗口
| 方法 | 说明 | | --------------------------- | ------------- | | pygame.display.set_mode()
| 初始化游戏显示窗口 | | pygame.display.update()
| 刷新屏幕内容显示,稍后使用 |
set_mode
方法
```
set_mode(resolution=(0,0), flags=0, depth=0) -> Surface ```
作用 —— 创建游戏显示窗口
参数
resolution
指定屏幕的宽
和高
,默认创建的窗口大小和屏幕大小一致flags
参数指定屏幕的附加选项,例如是否全屏等等,默认不需要传递depth
参数表示颜色的位数,默认自动匹配
返回值
- 暂时 可以理解为 游戏的屏幕,游戏的元素 都需要被绘制到 游戏的屏幕 上
注意:必须使用变量记录
set_mode
方法的返回结果!因为:后续所有的图像绘制都基于这个返回结果
```
创建游戏主窗口
screen = pygame.display.set_mode((480, 700)) ```
1.4 简单的游戏循环
为了做到游戏程序启动后,不会立即退出,通常会在游戏程序中增加一个 游戏循环
所谓 游戏循环 就是一个 无限循环
在 创建游戏窗口 代码下方,增加一个无限循环
- 注意:游戏窗口不需要重复创建
```
创建游戏主窗口
screen = pygame.display.set_mode((480, 700))
游戏循环
while True: pass ```
02. 理解 图像 并实现图像绘制
在游戏中,能够看到的 游戏元素 大多都是 图像
- 图像文件 初始是保存在磁盘上的,如果需要使用,第一步 就需要 被加载到内存
要在屏幕上 看到某一个图像的内容,需要按照三个步骤:
- 使用
pygame.image.load()
加载图像的数据 - 使用 游戏屏幕 对象,调用
blit
方法 将图像绘制到指定位置 - 调用
pygame.display.update()
方法更新整个屏幕的显示
- 使用
提示:要想在屏幕上看到绘制的结果,就一定要调用
pygame.display.update()
方法