CyberPi 炮彈發射器

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)),一直到螢幕的最上方時就消失。執行的結果如下面的影片所示:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *