pygame1

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

pygame 快速入门

目标

  1. 项目准备
  2. 使用 pygame 创建图形窗口
  3. 理解 图像 并实现图像绘制
  4. 理解 游戏循环游戏时钟
  5. 理解 精灵精灵组

项目准备

  1. 新建 飞机大战 项目
  2. 新建一个 项目
  3. 导入 游戏素材图片

游戏的第一印象

  • 把一些 静止的图像 绘制到 游戏窗口
  • 根据 用户的交互 或其他情况,移动 这些图像,产生动画效果
  • 根据 图像之间 是否发生重叠,判断 敌机是否被摧毁 等其他情况

01. 使用 pygame 创建图形窗口

小节目标

  1. 游戏的初始化和退出
  2. 理解游戏中的坐标系
  3. 创建游戏主窗口
  4. 简单的游戏循环

可以将图片素材 绘制游戏的窗口 上,开发游戏之前需要先知道 如何建立游戏窗口

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() 方法同样能够直接使用
案例演练

需求

  1. 定义 hero_rect 矩形描述 英雄的位置和大小
  2. 输出英雄的 坐标原点(xy)
  3. 输出英雄的 尺寸(宽度高度)

```

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. 理解 图像 并实现图像绘制

  • 在游戏中,能够看到的 游戏元素 大多都是 图像

    • 图像文件 初始是保存在磁盘上的,如果需要使用,第一步 就需要 被加载到内存
  • 要在屏幕上 看到某一个图像的内容,需要按照三个步骤:

    1. 使用 pygame.image.load() 加载图像的数据
    2. 使用 游戏屏幕 对象,调用 blit 方法 将图像绘制到指定位置
    3. 调用 pygame.display.update() 方法更新整个屏幕的显示

提示:要想在屏幕上看到绘制的结果,就一定要调用 pygame.display.update() 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值