歡迎光臨
每天分享高質量文章

PyGame Zero: 無需模板的遊戲開發 | Linux 中國

在你的遊戲開發過程中有了 PyGame Zero,和枯燥的模板說再見吧。

— Moshe Zadka


Python 是一個很好的入門級程式語言。並且,遊戲是一個很好的入門專案:它們是視覺化的,自驅動的,並且可以很愉快的與朋友和家人分享。雖然,絕大多數的 Python 寫就的庫,比如 PyGame[1] ,會讓初學者因為忘記微小的細節很容易導致什麼都沒渲染而感到困擾。

在理解所有部分的作用之前,他們會將其中的許多部分都視為“無意識的模板檔案”——需要複製和貼上到程式中才能使其工作的神奇段落。

PyGame Zero[2] 試圖透過在 PyGame 上放置一個抽象層來彌合這一差距,因此它字面上並不需要模板。

我們在說的“字面”,就是在指字面。

這是一個合格的 PyGame Zero 檔案:

  1. # This comment is here for clarity reasons

我們可以將它放在一個 game.py 檔案裡,並執行:

  1. $ pgzrun game.py

這將會展示一個視窗,並執行一個可以透過關閉視窗或按下 CTRL-C 中斷的遊戲迴圈。

遺憾的是,這將是一場無聊的遊戲。什麼都沒發生。

為了讓它更有趣一點,我們可以畫一個不同的背景:

  1. def draw():

  2.     screen.fill((255, 0, 0))

這將會把背景色從黑色換為紅色。但是這仍是一個很無聊的遊戲,什麼都沒發生。我們可以讓它變的更有意思一點:

  1. colors = [0, 0, 0]

  2. def draw():

  3.     screen.fill(tuple(colors))

  4. def update():

  5.     colors[0] = (colors[0] + 1) % 256

這將會讓視窗從黑色開始,逐漸變亮,直到變為亮紅色,再傳回黑色,一遍一遍迴圈。

update 函式更新了引數的值,而 draw 基於這些引數渲染這個遊戲。

即使是這樣,這裡也沒有任何方式給玩家與這個遊戲的互動的方式。讓我們試試其他一些事情:

  1. colors = [0, 0, 0]

  2. def draw():

  3.     screen.fill(tuple(colors))

  4. def update():

  5.     colors[0] = (colors[0] + 1) % 256

  6. def on_key_down(key, mod, unicode):

  7.     colors[1] = (colors[1] + 1) % 256

現在,按下按鍵來提升亮度。

這些包括遊戲迴圈的三個重要部分:響應使用者輸入,更新引數和重新渲染螢幕。

PyGame Zero 提供了更多功能,包括繪製精靈圖和播放聲音片段的功能。

試一試,看看你能想出什麼型別的遊戲!


via: https://opensource.com/article/19/1/pygame-zero

作者:Moshe Zadka[4] 選題:lujun9972 譯者:bestony 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出