PyGame Zero:无需样板代码的游戏

使用 PyGame Zero,告别游戏开发中枯燥的样板代码。
266 位读者喜欢这篇文章。
Python game screenshot

OpenGameArt.org

Python 是一种优秀的入门级编程语言。而游戏是一个很好的入门项目:它们是可视化的、自我激励的,并且可以有趣地向朋友和家人展示。然而,Python 中最常用的游戏开发库 PyGame 对于初学者来说可能会令人沮丧,因为忘记看似微小的细节很容易导致什么都无法渲染。

在人们理解为什么所有部分都在那里之前,他们将其中许多部分视为“无脑的样板代码”——需要复制粘贴到程序中才能使其工作的神奇段落。

PyGame Zero 旨在通过在 PyGame 上放置一个抽象层来弥合这一差距,从而使其完全不需要样板代码。

当我们说完全时,我们是认真的。

这是一个有效的 PyGame Zero 文件

# This comment is here for clarity reasons

我们可以将其放在 game.py 文件中并运行

$ pgzrun game.py

这将显示一个窗口并运行一个游戏循环,可以通过关闭窗口或使用 CTRL-C 中断程序来关闭它。

可悲的是,这将是一个无聊的游戏。什么都不会发生。

为了让它稍微有趣一点,我们可以绘制一个不同的背景

def draw():
    screen.fill((255, 0, 0))

这将使背景变为红色而不是黑色。但这仍然是一个无聊的游戏。什么都没有发生。我们可以让它稍微有趣一点

colors = [0, 0, 0]

def draw():
    screen.fill(tuple(colors))

def update():
    colors[0] = (colors[0] + 1) % 256

这将创建一个窗口,该窗口开始时为黑色,然后变得越来越亮的红色,然后再变回黑色,如此反复。

update 函数更新参数,而 draw 函数根据这些参数渲染游戏。

然而,玩家无法与游戏互动!让我们尝试一些其他的

colors = [0, 0, 0]

def draw():
    screen.fill(tuple(colors))

def update():
    colors[0] = (colors[0] + 1) % 256

def on_key_down(key, mod, unicode):
    colors[1] = (colors[1] + 1) % 256

现在按下键盘上的按键将增加“绿色度”。

这些构成了游戏循环的三个重要部分:响应用户输入、更新参数和重新渲染屏幕。

PyGame Zero 提供了更多功能,包括绘制精灵和播放声音片段的函数。

尝试一下,看看你能做出什么样的游戏!

标签
Moshe sitting down, head slightly to the side. His t-shirt has Guardians of the Galaxy silhoutes against a background of sound visualization bars.
自 1998 年以来,Moshe 一直参与 Linux 社区,帮助举办 Linux “安装派对”。他自 1999 年以来一直从事 Python 编程,并为核心 Python 解释器做出了贡献。Moshe 在 DevOps/SRE 这些术语出现之前就已经是 DevOps/SRE,他非常关心软件可靠性、构建可重现性以及其他此类事情。

1 条评论

有趣的是,游戏从上个世纪发展到今天,特别是现在可以在我们的移动设备和任何电脑上玩游戏

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.