python–pygame入门–2.1–基础使用–创建图形窗口


1、使用 pygame 创建图形窗口

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

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

2、游戏的初始化和退出

  • 要使用 pygame 提供的所有功能之前,需要调用 init 方法
  • 在游戏结束前需要调用一下 quit 方法
方法 说明
pygame.init() 导入并初始化所有 pygame 模块,使用其他模块之前,必须先调用 init 方法
pygame.quit() 卸载所有 pygame 模块,在游戏结束之前调用!

在这里插入图片描述

# 导入pygame模块
import pygame

pygame.init()

# 游戏代码...

pygame.quit()


3、理解游戏中的坐标系

3.1、坐标系

  • 原点左上角 (0, 0)
  • x 轴 水平方向向 ,逐渐增加
  • y 轴 垂直方向向 ,逐渐增加

在这里插入图片描述

  • 在游戏中,所有可见的元素 都是以 矩形区域 来描述位置的
    • 要描述一个矩形区域有四个要素:(x, y) (width, height)
  • pygame 专门提供了一个类 pygame.Rect 用于描述 矩形区域
  • pygame.Rect 是一个比较特殊的类,内部只是封装了一些数字计算,不执行 pygame.init() 方法同样能够直接使用
Rect(x, y, width, height) -> Rect

在这里插入图片描述

3.2、案例演练

需求

  1. 定义 hero_rect 矩形描述 英雄的位置和大小
  2. 输出英雄的 坐标原点xy
  3. 输出英雄的 尺寸宽度高度
# 导入pygame模块
import pygame

hero_rect = pygame.Rect(100, 500, 480, 700)

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)

在这里插入图片描述

3、创建游戏主窗口

  • pygame 专门提供了一个 模块 pygame.display 用于创建、管理 游戏窗口
方法 说明
pygame.display.set_mode() 初始化游戏显示窗口
pygame.display.update() 刷新屏幕内容显示,稍后使用

3.1、set_mode 方法

set_mode(resolution=(0,0), flags=0, depth=0) -> Surface
  • **作用:**创建游戏显示窗口

  • 参数

    • resolution 指定屏幕的 ,默认创建的窗口大小和屏幕大小一致
    • flags 参数指定屏幕的附加选项,例如是否全屏等等,默认不需要传递
    • depth 参数表示颜色的位数,默认自动匹配
  • 返回值

    • 暂时 可以理解为 游戏的屏幕游戏的元素 都需要被绘制到 游戏的屏幕
  • 注意:必须使用变量记录 set_mode 方法的返回结果!因为:后续所有的图像绘制都基于这个返回结果

3.2、案例:简单的游戏循环

  • 为了做到游戏程序启动后,不会立即退出,通常会在游戏程序中增加一个 游戏循环
  • 所谓 游戏循环 就是一个 无限循环
  • 创建游戏窗口 代码下方,增加一个无限循环
    • 注意:游戏窗口不需要重复创建
# 创建游戏主窗口
screen = pygame.display.set_mode((480, 700))
# 游戏循环
while True:
    pass

整体代码

# 导入pygame模块
import pygame

# 导入并初始化所有 `pygame` 模块,使用其他模块之前,必须先调用 `init` 方法
pygame.init()

# 英雄的指标
hero_rect = pygame.Rect(100, 500, 120, 126)
# 创建游戏主窗口
screen = pygame.display.set_mode((480, 700))
# 游戏循环
while True:
    pass

# 卸载所有 `pygame` 模块,在游戏结束之前调用!
pygame.quit()

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐