文章目录
- pygame快速入门
- 前言
- 1.项目准备
- 2.游戏的第一印象
- 一、使用pygame创建图形窗口
- 1.目标
- 1.1 游戏的初始化和退出
- 二.理解游戏中的坐标系
- 三.创建游戏主窗口
- 1.set_mode 方法
- 四、简单的游戏循环
- 小结
前言 1.项目准备
安装pygame: 在pycharm或者Dos窗口下写:pip install pygame
引入pygame: import pygame
- 新建 飞机大战 项目
- 新建一个 hm_01_pygame入门.py
- 导入 游戏素材图片
- 把一些 静止的图像 绘制到 游戏窗口 中
- 根据 用户的交互 或其他情况,移动 这些图像,产生动画效果
- 根据 图像之间 是否发生重叠,判断 敌机是否被摧毁 等其他情况
一、使用pygame创建图形窗口 1.目标
- 游戏的初始化和退出
- 理解游戏中的坐标系
- 创建游戏主窗口
- 简单的游戏循环
- 要使用 pygame 提供的所有功能之前,需要调用 init 方法
- 在游戏结束前需要调用一下 quit 方法
pygame.init():导入并初始化所有 pygame 模块,使用其他模块之前,必须先调用 init 方法
pygame.quit():卸载所有 pygame 模块,在游戏结束之前调用!
import pygame pygame.init() # 游戏代码... pygame.quit()二.理解游戏中的坐标系
坐标系
-
原点 在 左上角 (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)
- 输出英雄的 尺寸(宽度 和 高度)
hero_rect = pygame.Rect(100, 500, 120, 126)
print("坐标原点 %d %d" % (hero_rect.x, hero_rect.y))
print("英雄大小 %d %d" % (hero_rect.width, hero_rect.height))
# size 属性会返回矩形区域的 (宽, 高) 元组
print("英雄大小 %d %d" % hero_rect.size)
三.创建游戏主窗口
pygame 专门提供了一个 模块 pygame.display 用于创建、管理 游戏窗口
pygame.display.set_mode():初始化游戏显示窗口
pygame.display.update():刷新屏幕内容显示
set_mode(resolution=(0,0), flags=0, depth=0) -> Surface
- 作用 —— 创建游戏显示窗口
- 参数
- resolution 指定屏幕的 宽 和 高,默认创建的窗口大小和屏幕大小一致
- flags 参数指定屏幕的附加选项,例如是否全屏等等,默认不需要传递
- depth 参数表示颜色的位数,默认自动匹配
- 返回值
- 暂时 可以理解为 游戏的屏幕,游戏的元素 都需要被绘制到 游戏的屏幕 上
- 注意:必须使用变量记录 set_mode 方法的返回结果!因为:后续所有的图像绘制都基于这个返回结果
# 创建游戏主窗口 screen = pygame.display.set_mode((480, 700))四、简单的游戏循环
- 为了做到游戏程序启动后,不会立即退出,通常会在游戏程序中增加一个 游戏循环
- 所谓 游戏循环 就是一个 无限循环
- 在 创建游戏窗口 代码下方,增加一个无限循环
- 注意:游戏窗口不需要重复创建
# 创建游戏主窗口
screen = pygame.display.set_mode((480, 700))
# 游戏循环
while True:
pass
小结
最近几章会更新Python飞机大战游戏相关内容,从理解到创建,再到完全实现,会分成各个章节,感兴趣的小伙伴可以关注一下.
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!


![Python飞机大战游戏[pygame入门] Python飞机大战游戏[pygame入门]](http://www.mshxw.com/aiimages/31/931530.png)
