PyGame Zero: 無需模板的游戲開發(fā)
在你的游戲開發(fā)過程中有了 PyGame Zero,和枯燥的模板說再見吧。
Python 是一個很好的入門級編程語言。并且,游戲是一個很好的入門項目:它們是可視化的,自驅(qū)動的,并且可以很愉快的與朋友和家人分享。雖然,絕大多數(shù)的 Python 寫就的庫,比如 PyGame ,會讓初學者因為忘記微小的細節(jié)很容易導致什么都沒渲染而感到困擾。
在理解所有部分的作用之前,他們會將其中的許多部分都視為“無意識的模板文件”——需要復制和粘貼到程序中才能使其工作的神奇段落。
PyGame Zero 試圖通過在 PyGame 上放置一個抽象層來彌合這一差距,因此它字面上并不需要模板。
我們在說的“字面”,就是在指字面。
這是一個合格的 PyGame Zero 文件:
# This comment is here for clarity reasons
我們可以將它放在一個 game.py
文件里,并運行:
$ pgzrun game.py
這將會展示一個窗口,并運行一個可以通過關(guān)閉窗口或按下 CTRL-C
中斷的游戲循環(huán)。
遺憾的是,這將是一場無聊的游戲。什么都沒發(fā)生。
為了讓它更有趣一點,我們可以畫一個不同的背景:
def draw():
screen.fill((255, 0, 0))
這將會把背景色從黑色換為紅色。但是這仍是一個很無聊的游戲,什么都沒發(fā)生。我們可以讓它變的更有意思一點:
colors = [0, 0, 0]
def draw():
screen.fill(tuple(colors))
def update():
colors[0] = (colors[0] + 1) % 256
這將會讓窗口從黑色開始,逐漸變亮,直到變?yōu)榱良t色,再返回黑色,一遍一遍循環(huán)。
update
函數(shù)更新了參數(shù)的值,而 draw
基于這些參數(shù)渲染這個游戲。
即使是這樣,這里也沒有任何方式給玩家與這個游戲的交互的方式。讓我們試試其他一些事情:
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
現(xiàn)在,按下按鍵來提升亮度。
這些包括游戲循環(huán)的三個重要部分:響應用戶輸入,更新參數(shù)和重新渲染屏幕。
PyGame Zero 提供了更多功能,包括繪制精靈圖和播放聲音片段的功能。
試一試,看看你能想出什么類型的游戲!