[Scratch] 打地鼠恐龍遊戲

[Scratch] 打地鼠恐龍遊戲

之前就有點想做打地鼠遊戲,

今天用 Scratch 花了點時間,終於實作出來啦~

Scratch 雖然簡單,可是反倒是因為如此,

某些程式流程變得不容易做出來,

常常得用別的方法來實現,

這也算是用 Scratch 的一大挑戰吧~

 

來看一下這個遊戲需要的角色吧~

我一共設計了五個角色 (其實還要另外包含背景),

分別是洞 (hole)、恐龍 (dinosaur)、槌子 (hammer)、時間 (time) 和標題 (banner):

 

1. 角色:洞 (Hole)

為了要讓遊戲看起來比較不一樣,

每次遊戲時,都會隨機產生 4~6 個地鼠要鑽出來的洞,

並且擺在隨機的位置上~

擺好之後,就可以廣播訊息 CreateAnimal 給恐龍,

讓它開始產生恐龍分身;

另外廣播訊息 ShowStartBanner 顯示開始訊息。

最後 DecrementTime 則是依序遞減剩下的時間:

 

遊戲一開始先清楚所有洞的資料:

 

產生洞的時候,要先用 DecideHolePosition 決定洞的位置,

再將位置的 X, Y 值分別存到兩個清單中,

接著用 stamp 指令,將洞的圖直接蓋在畫面上

(我沒有用洞的分身來做這件事):

 

怎麼決定洞的位置呢?

目前是先隨機移動,然後去跟現有的洞比較,

如果與任何一個現有的洞的 X 值和 Y 值都小於 90,

就認為這個新的洞離現有的洞太近了 (可能會部分重叠),

就持續隨機移動,直到位置不會離現有的洞太近:

 

DecrementTime 則是在遊戲開始後,遞減剩下的時間,

並廣播訊息 CheckTime 給 Time 角色去看現在還剩下多少時間。

時間到了之後,就廣播訊息來顯示遊戲結束標題:

 

2. 角色:恐龍 (Dinosaur)

恐龍就得產生分身了,才有辦法同時出現多隻~

一開始讓母體先隱藏,我們都只拿分身來用:

 

當收到洞發過來的 CreateAnimal 訊息後,

恐龍就會移動到每個洞的位置上,並產生分身

(所以分身恐龍會在所有的洞上面):

 

當收到 Start 開始遊戲的訊息後,

就隨機等一段時間,再往上浮出 (當做是地鼠探出頭的樣子),

再隨機等一段時間後,就往下潛入洞中:

 

當恐龍收到槌子發過來的 CheckIfHit 廣播訊息後,

會檢查自己是否和槌子相碰了,

是的話就改變顏色並左右晃動一下,代表被擊中了:

 

3. 角色:槌子 (Hammer)

槌子的角色很簡單,它必須隨著滑鼠的游標移動,

顯示出槌子準備要敲下的模樣:

 

當收到舞台送來的 TryHit 訊息時,

會先顯示槌子下敲的樣子,

再發送廣播訊息 CheckIfHit,讓恐龍去檢查是否被槌子敲中了。

最後,再回復成槌子向上的樣子:

 

4. 角色:時間 (Time)

時間角色基本上是一個細長的長方形,

產生一堆分身並排在一起的話,

就可以製造成時間倒數條 (也有點像血量計)~

 

下面有用一個專屬於時間角色的本地變數 IndexTime,

第一個時間分身是 1,第二個是 2,

這樣建出來 30 個時間分身,就分別代表 1 秒、2 秒… 到 30 秒:

 

當收到洞廣播的 CheckTime 訊息後,

如果自身的 IndexTime < 剩下秒數,

就可以把自己分身刪除,造成時間列減少的效果:

 

5. 角色:標題 (Banner)

這個角色很簡單,一開始還不用顯示:

 

收到洞傳來的 ShowStartBanner 訊息後,

就顯示遊戲開始的大標題,

接著等 3 秒後再廣播 Start 訊息,

代表遊戲正式開始,可以敲地鼠恐龍了:

 

如果收到洞傳來的 GameOver 訊息,

就顯示遊戲結束的大標題:

 

6. 背景 (Backdrop)

背景的程式很簡單,

主要就是按下空白鍵時,發送 TryHit 訊息,

好讓槌子顯現出往下敲的樣子,並檢查有無擊中。

同時,用滑鼠點擊也有相同效果:

 

來看看遊戲的實況吧:

 

有興趣玩玩或研究的人,

可以參考 打地鼠恐龍遊戲 (Hit the Gopher Dinosaurs) 這個 Scratch 專案喔~

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

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