編程貓開發《摘星星小怪物》遊戲

【閱讀提示】編程貓中的源碼編輯器是一款相似於Scratch的軟件,並且在實現功能上作了大幅度的改進與提高。所以,熟悉Scratch編程的朋友能夠很容易閱讀本文;可是,其中的部分積木代碼與Scratch並不相同。Scratch積木提供了少兒編程最基礎的功能積木;編程貓源碼編輯器則擴展了Scratch功能,並進行了大量簡化。編程

根據本人使用百度指數的粗略分析,編程貓是截止目前國內最大規模且技術研發含量最高的少兒編程(含機器人編程)公司,值得關注。框架

1、遊戲情景與快照

遊戲未開始時界面如圖所示:
編程貓開發《摘星星小怪物》遊戲編輯器

遊戲情景是這樣的:夜路上小怪物要回家,遇到頭頂上可愛的小星星。因而,好奇的小怪物左跳右跳跑來跑去地捉起了可愛的小星星,可是小怪物功力有限(6個生命值)——若是在指定時間和有限功力內摘不到小星星,則遊戲線束。每摘到一顆小星星,得1分;每錯過一次摘取機會,功力值會減小,直到爲0——標記遊戲結束。其中,功力值使用屏幕下方的狀態條表示。ide

下圖給出了遊戲運行中的某一時間截圖:
編程貓開發《摘星星小怪物》遊戲測試

2、系統模塊圖

編程貓開發《摘星星小怪物》遊戲

系統實現主要難點在於:動畫

(1)小怪物跳躍高度與移動速度的控制(經驗值)設計

(2)星星消失的時間控制(隨着遊戲難度的提高)與出現位置計算遊戲

(3)多星星狀況下使用克隆技術克隆小星星(本版本遊戲中未提供支持)進程

(4)協調遊戲中各元素的通信ip

3、角色與數據設計

(一)角色

遊戲中,包括舞臺背景在內,共有9個角色(精靈),如圖所示:
編程貓開發《摘星星小怪物》遊戲

注意:失敗界面是使用一個前景角色實現的。

(二)變量定義

在編程貓中,相似於Scratch,變量分爲普通變量與列表兩種類型。由於本遊戲數據並不複雜,因此只使用了普通變量。各變量定義及含義描述以下:

如本人之前文章中的變量定義形式同樣,全局變量使用「gv」(global variable)開頭,局部變量(本地變量)則以「lv」(local variable)開頭。


  • gv遊戲狀態:描述遊戲的不一樣階段,共有4種值:未開始,開始遊戲,遊戲成功,遊戲失敗。
  • gv聲音開:用於描述全局中游戲聲音開關是否打開:1——打開;0——關閉。
  • gv得分:計算遊戲得分,初始爲0,每摘到一顆星星,得1分,對應於遊戲屏幕左上角的金幣數。
  • gv生命值:這個生命值對應於屏幕左下方的生命進度條,使用6個造型分別表明小怪物的生命值大小(起始有最大6條命)。
  • gvStarDuration:小星星生命持續時間長度,超出這個時間長度,星星會隱藏起來。
  • gvMaxStarDuration:小星星生命持續時長最大值,默認爲5。
  • gvMinStarDuration:小星星生命持續時長最小值,默認爲3。
    其餘私有變量,在後面介紹每個角色編程時再一併介紹。

4、角色編程

(一)背景角色

有些人編程中,背景角色基本不進行編程。可是,通過一段時間的實踐,本人認爲在實現系統功能全局統籌與監管等功能時,使用背景角色來編程最合適。本遊戲中,背景角色主要功能以下:


  • 系統全局變量的初始化
  • 背景音樂控制
  • 全局遊戲進程的監管

編程貓開發《摘星星小怪物》遊戲

編程貓開發《摘星星小怪物》遊戲

編程貓開發《摘星星小怪物》遊戲

對最後一個代碼段做一下解釋。開始按鈕點擊播放「開始遊戲」消息,在接收到此消息後,建立一個無限循環,在這個循環中實現整個遊戲系統的進程監聽,並完成協調任務。根據前面描述,小怪物在遊戲開始有6條命,當超過指定時限,生命值減一,由描述生命值的進度條指示。而後,重置計時器,再次循環,當生命值爲0時,播放遊戲失敗的消息,並退出此無限循環。

在上述代碼中,【告訴(...)執行】積木和【跳出循環】是編程貓特有的。其中,【告訴(...)執行】積木算是廣播積木的簡化形式,可使用廣播方式來代替。由於發出消息後,接收方僅完成極少許的工做;這種狀況下,不須要使用廣播方式轉來轉去,這種方式簡化了此操做。【跳出循環】在此可使用【中止(當前積木)】代替。

(二)小怪物角色

共有四部分代碼:

(1)本地(私有)變量初始化

(2)按鍵編程

(3)跳躍編程

(4)水平方向行走速度編程
編程貓開發《摘星星小怪物》遊戲

本處定義了5個局部變量。其中前面兩個變量是布爾類型(編程中常用取值僅爲1和0的這種特殊整數類型代碼),分別用於指示是向左仍是向右加速移動。第3個變量表明水平方向移動的速度,第4個是水平方向最大速度,最後一個是水平方向加速度,後面幾個變量的值須要根據遊戲中實際須要不斷調整。

編程貓開發《摘星星小怪物》遊戲

編程貓開發《摘星星小怪物》遊戲

這段代碼功能有二:實現跳躍(跳起與下落);播放跳躍聲音。
編程貓開發《摘星星小怪物》遊戲

這段代碼的功能是,根據移動方向計算水平移動速度。兩個物理公式:

  • v=at
  • s=vt
    前面提到,加速度是一個經驗值(就是根據遊戲須要人爲不斷調整),那麼時間t是怎麼來的?我使用的是Cocos Creator中的默認值(Cocos Creator是國內著名的基於Cocos2d-x框架的使用JavaScript開發的內容創做系統,它的默認屏幕刷新頻率是1/60,即1秒刷新60次)。所以,上面的0.0167是1/60的大約計算結果。

另外,這裏設置了一個速度最大值,由於當移動速度達到至關大時,遊戲難度太大,讓玩家挫敗感太強,有可能致使其放棄。

(三)星星角色

共有兩段代碼。
編程貓開發《摘星星小怪物》遊戲

編程貓開發《摘星星小怪物》遊戲

在初始化中,定義了一個描述星星與小怪物合適距離的局部變量,當距離小於這個變量值時,認爲小怪物摘到星星。這也是一個經驗值變量,讀者能夠不斷調整使用。

第二段代碼中,只要遊戲不結束,循環一直運行下去。當星星與小怪物的距離知足條件,加分,播放音效,並隱藏。這裏做了簡單處理,即隱藏後稍微等一些時間,再出如今另一個位置。這個另外位置的計算是一個難點。

位置的計算中,既要考慮到舞臺的實際寬度,還要考慮地面位置Y座標,還要考慮到隨機數使用。這一行最長的代碼須要結合經驗值做仔細調整測試。

接下來,這裏定義了兩個變量:gvMaxStarDuration和gvMinStarDuration,分別表明星星的最大存活時限與最小存活時限,默認是5和3。當前存活時限變量是gvStarDuration,它的計算也是使用隨機數,並結合經驗公式推斷出來的。在此不做過細的介紹。

接下來的幾個角色代碼簡單,在此僅列出,不做過多解釋。

(四)其餘角色

1.遊戲失敗角色代碼

編程貓開發《摘星星小怪物》遊戲

2.地面角色代碼
編程貓開發《摘星星小怪物》遊戲

3.生命值進度條代碼
編程貓開發《摘星星小怪物》遊戲

4.聲音角色代碼
編程貓開發《摘星星小怪物》遊戲

5.開始按鈕角色代碼
編程貓開發《摘星星小怪物》遊戲

5、小結

本文介紹使用編程貓Kitten編輯器開發一款小遊戲《摘星星小怪物》的完整過程。經過該遊戲的開發過程有助於你深刻了解使用編程貓Kitten編輯器的完整過程和技術難點,從而爲進一步深刻靈活應用編程貓開發各類創意程序打好基礎。遊戲中的最大難點在於結合物理知識經驗值的肯定,例如,小怪物移動速度、小星星出現的隨機位置與間隔時間等。有興趣的朋友,能夠基於此做進一步擴展研究,例如在以下方面:

  • 引入克隆技術,建立多個小星星,增長遊戲難度,造成多關卡遊戲
  • 摘到星星與星星消失時使用動畫特效
  • 引入道具改進小怪物摘取星星的方法......
相關文章
相關標籤/搜索