場景 (Scenes)
spaceshooter 的場景管理是使用 Corona 官方發佈的 composer 函式庫。場景檔案位於 scenes 目錄下,以下是場景轉換的簡單流程圖:
main.lua
main.lua 並非場景檔案,而是程式的進入點,在這裏會完成與裝置相關的系統設置與部分功能的初始化。與大部份遊戲不同的是,main.lua 不會直接進入負責開始畫面的場景:start.lua。這是因為此模板除了 game.lua 之外的場景,都是被設計成覆蓋 (overlay) 選單,所以 main.lua 會直接進入場景 game.lua ,而 game.lua 在再帶出覆蓋選單 start.lua。
注意,在 Corona composer 場景管理函式庫中,所有場景都可以使用 composer.showOverlay() 將該場景覆蓋在目前的場景上,或使用 composer.gotoScene() 直接進入該場景。
game.lua
game.lua 是遊戲進行的地方,是所有場景之中最複雜的。它提供了可以控制遊戲進度的方法:開始遊戲 startGame()、暫停遊戲 pauseGame()、恢復遊戲 resumeGame()、以及清除遊戲clearGame()。
當進入 game.lua,game:create() 會先進行部分遊戲物件的初始化。接著 game:show() 則會根據帶入場景的參數而有不同的行為:當遊戲為第一次進行或玩家按下回到開始選單的按鈕時,會帶出 start.lua 場景,而當玩家按下開始遊戲按鈕與重新開始按鈕時,則會開始遊戲。當玩家試圖離開或重新進入 game.lua:像是重新開始遊戲與回到開始畫面,函式 game:hide() 會進行遊戲的重置,回收過時的遊戲物件,以進行下一輪遊戲。
start.lua
start.lua 是遊戲的開始畫面,它包含遊戲 Logo 、版號、還有一個讓玩家進入遊戲的按鈕。
menu.lua
menu.lua 是當遊戲進行到一半時,玩家按下暫停出現的選單。他讓玩家可以調整系統設定、恢復、重新開始或是離開遊戲。
gameover.lua、victory.lua
當玩家消耗完生命值,無法繼續遊戲時,便會出現遊戲結束的場景 gameover.lua,反之玩家如果完成了全部的關卡,便會出現完成遊戲的場景 victory.lua 。這兩個場景都提供可以離開遊戲、重新開始遊戲的按鈕。
newHighScore.lua
不管玩家在遊戲中勝利或是失敗,當玩家獲得了更高的分數,都會進入場景 newHighScore.lua。newHighScore.lua 包含一個簡單的文字輸入框,讓玩家輸入在排行榜出現的名稱。按下確認後,分數會被記錄下來,並視情況上傳至排名伺服器。
leaderBoard.lua
leaderBoard.lua 是顯示排行榜的場景,排行榜分為兩種:本地排行,與全球排行。本地排行是根據該裝置的儲存紀錄排名,而全球排行是根據排名伺服器的資料排名。
whoAreYou.lua
whoAreYou 是讓玩家輸入自己暱稱的場景,輸入的名字會被儲存在資料庫,顯示在得分板上。