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