CyberPi 本身就是一台小型的遊戲機,在Python的程式庫中有許多的遊戲製作函式可以使用,其中最重要的就是 Sprite 類別,只要把宣告一個Sprite物件,就有許多針對該物件操作的函式可以用,在修改完Sprite的物件之後,再以screen.render重繪螢幕就可以讓設定值生效,這些設定值可以包括Sprite的外觀、位置等等。
假設我們想要製作一個射擊遊戲,透過搖桿可以把Sprite物件進行左右移動,當使用者按下「A」按鈕後,就把Sprite往上發射,程式碼如下:
import cyberpi as cp
def main():
cp.display.clear()
rocket = cp.sprite()
rocket.draw_text("X")
rocket.move_to(60,100)
rocket.show()
cp.screen.render()
while not cp.controller.is_press("a"):
if cp.controller.is_press("left"):
rocket.move_x(-2)
elif cp.controller.is_press("right")>0:
rocket.move_x(2)
cp.screen.render()
cp.audio.play("laser")
for i in range(50):
rocket.move_y(-4)
cp.screen.render()
rocket.delete()
cp.screen.render()
while True:
main()
在本段程式中,我們先把整個遊戲的流程放在自訂函式main中,如此就可以讓這個遊戲不斷地運作。
在自訂函式中,先產生一個rocket的Sprite,把它的內容(外觀)設定為”X”,並放置在螢幕的中間下方處,之後就進入一個等待迴圈,如果一發現搖桿被往左推的話就把rocket的X座標往左移動,反之則往右移動(move_x(2)),在調整Sprite的屬性之後,一定要呼叫screen.render()畫面才會重繪生效。
當使用者按下「A」按鈕時會離開移動迴圈,先發出一個音效,然後再把rocket這個Sprite逐漸往上移動(move_y(-4)),一直到螢幕的最上方時就消失。執行的結果如下面的影片所示: