pygame 初步

pygame 是 python 下的一款简单的游戏库,上手简单而且中文教程丰富。现在来讲最基础的 pygame 框架使用:

pygame 安装

pygame 使用 pip 进行安装就可以了,打开终端输入:

1
pip install pygame

或者在 Linux 下有些发行版软件源已经包含,直接使用包管理安装即可,比如在 ArchLinux:

1
sudo pacman -S python-pygame

安装完成之后使用 import pygame 就可以直接使用 pygame

初始化 pygame

在开始使用之前,还需要对 pygame 进行初始化:

1
pygame.init()

第一个窗口

初始化完成后就需要创建并设置窗口:

1
2
3
4
5
# 创建一个窗口 使用一个元组设置窗口大小
win = pygame.display.set_mode((500, 500))

# 设置窗口标题
pygame.display.set_caption("First game")

这里的 set_mode() 内第一个参数是元组包含 x, y 信息。

注: 元组这个数据结构与列表,不同的是元组不可修改

set_caption()display 子模块下是方法。它设置了窗口名称,作用于窗口标题。

如果现在运行,会发现窗口一闪而过。这就需要我们用一个循环来保持窗口存在:

1
2
3
4
5
6
run = True
while run:
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

首先定义一个布尔变量 run 用于判断接下来主循环是否进行。而后使用 while 循环来保持窗口

pygame.display.update() 刷新窗口,而接下来的 for 循环在 pygame.event.get() 下进行:
pygame.event.get() 遍历事件列表的每一个事件,而且这样的以非阻塞的形式获取事件。
比如我们需要能够按下关闭键退出窗口,我们就需要判断事件类型是否为 QUIT。接下来的 if 语句就是用来判断是否得到退出事件的。
现在的窗口是这样的:

一个矩形

我们现在想开始在窗口上绘制矩形,首先需要矩形的各种参数,使用几个变量来存储这些信息:

1
2
3
4
5
6
7
8
# 矩形位置信息
x = 50
y = 50
# 矩形长宽信息
width = 40
height = 60
# 矩形移动速度信息
vel = 5

我们想要在窗口上绘制这个矩形就需要在主循环中不断的运行绘制函数:

1
pygame.draw.rect(win, (255, 255, 255), (x, y, width, height))

将这行代码添加到主循环中,在事件循环判断之下:

现在运行程序,在窗口上就出现了一个白色的小矩形:

让矩形动起来

为实现矩形的移动,我们需要获取键盘事件,在事件循环中使用一个变量保存按下键盘的信息:

1
    keys = pygame.key.get_pressed()

然后我们就要开始对方向键的时间进行解释了:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    if keys[pygame.K_LEFT]:
        x -= vel

    if keys[pygame.K_RIGHT]:
        x += vel

    if keys[pygame.K_UP]:
        y -= vel

    if keys[pygame.K_DOWN]:
        y += vel

对 x, y 的操作会作用到矩形的绘制代码上,但是此时还是覆写状态,也就是随着移动,屏幕会充满白色: 显然这不是我们想要的。实际上,pygame 是不断在屏幕上绘制各种东西而不会擦出原本的画面。解决方法自然是在绘制前重新用背景色覆盖屏幕,比如我们依然用黑色覆写:

1
        win.fill((0, 0, 0))

这样,我们就实现了一个可以由我们控制的矩形。至此,我们已经大体认识了 pygame 框架。

萌ICP备20241614号