[Scratch] 摧毀潛艦遊戲 (Destroy the Submarines)

[Scratch] 摧毀潛艦遊戲 (Destroy the Submarines)

最近用 Scratch 寫了「摧毀潛艦遊戲 (Destroy the Submarines)」,

自己覺得應該是我的 Scratch 裡最好玩的遊戲吧~

 

其實它就是以前掌上型遊戲機很常見的類型,

可以操控海面上的船,用炸彈去丟敵人潛艦,

以前玩的敵人還有飛機會來攻擊,

不過考慮到畫面大小以及操控性的問題,

就不做飛機的部分了~

 

先來看一下完成的遊戲畫面:

 

簡述一下程式幾個重點:

1. 左右方向鍵移動船艦

用方向鍵移動角色,有至少兩種作法。

一種是在「當方向鍵被按下」時,改變 X 坐標。

但這種的缺點是卡頓感很明顯,

因為事件的觸發似乎不是那麼快…

 

因此我這邊用的是第二種作法,

那就是在迴圈中持續檢測是否方向鍵被按下,是的話就改變 X 坐標。

這種做法船隻移動起來比較順暢:

 

2. 決定敵人潛艦數量

遊戲一開始有難度的選擇,

但隨著遊戲的進行,增加挑戰難度也是必須的~

因此會讓敵人潛艦的數量隨著分數提昇而增加:

 

3. 決定敵人潛艦方向與速度

潛艦要嘛就是從畫面的左邊出現、要嘛就是從右邊出現,

不過如果每艘速度都一樣的話,就有點千篇一律。

因此先從一段負數到正數間的值,取得一個值代表速度,

正的話表示往右 (X 坐標變大),負的話表示往左 (X 坐標變小)。

方向就是用 +1 表示往右,-1 表示往左:

 

4. 按空白鍵丟下炸彈

這裡不需要太過快速的對空白鍵事件連續反應,

因此只要在空白鍵被按下時,再做處理就行了。

為了避免太快速的丟炸彈,

我這邊用了 timer (計時器),

如果上次丟炸彈的時間離現在已經超過 0.3 秒,

才允許產生炸彈的分身:

 

炸彈的動作很簡單,

就是在迴圈裡持續的往下移動,並偵測是否接觸到了潛艦。

接觸到的話,會希望在接觸到的點產生一個爆炸的角色。

這個接觸點,應該是可以在「炸彈」與「潛艦」的中央,

但潛艦同時有好幾艘,炸彈怎麼知道打到哪個潛艦呢?

 

我的做法是發送一個訊息 CheckIfHit,並等待回應

(也就是要所有接收到訊息的人都處理完),

當潛艦收到訊息時,它就檢查自己是否有接觸到炸彈,

有的話就設定變數 ExplodeEnemyY,

這樣炸彈待會就知道爆炸點的 Y 坐標應該在哪了:

 

5. 敵人潛艦發射飛彈

敵人潛艦也是會發射飛彈來攻擊玩家的~

在隨機的時間,潛艦就會在它所在的地方,

產生一個飛彈的分身,

這個飛彈一開始會朝向指定的方向。

指定的方向,以隨機的方式,決定是要亂打,

或是朝玩家船艦的方向附近打。

飛彈移動時,時時偵測自己是否打中了玩家,

或是已經到畫面邊緣該消失了:

 

這個 Scratch 遊戲其實並不複雜,

但遊戲效果挺不錯的,

有興趣的人可以到 摧毀潛艦遊戲 (Destroy the Submarines) 來玩玩看喔~^^

(本頁面已被瀏覽過 339 次)

發佈留言

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

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料