本文摘自電腦報出品的《Scratch3.9青少年編程高分寶典》一書。你需要綜合應用Scratch積木才能實現預期效果,完成保護飛船的小游戲。
游戲背景:太空飛船發生故障,外星人正從四面八方襲來,你需要操控守護者,保護飛船直到修理完畢離開戰場。在飛船安全撤離前,若飛船被毀則游戲失敗,否則游戲勝利。
目標分析:根據背景設定可知,游戲中要包括飛船、守護者以及外星人三個角色。飛船會留在舞臺中間一段時間,等到故障解除,即繼續往邊緣移動,移動到邊緣即視為脫離戰場,游戲勝利。
守護者由玩家操控,可以消滅敵人,保證飛船血量大于0直到獲得勝利。守護者造型比較特殊,需要自行繪制。

選擇水母(Jellyfish)作為外星人。外星人由電腦控制,從各個方向出現,并沖向飛船,若擊中飛船則扣除一定血量,若被守護者擊中,則視為損毀消失,在飛船撤離戰場前,將飛船血量消耗完則視為游戲失敗。
還需要一張太空背景圖,選擇太空(Nebula)背景。
游戲大體分為三個階段:初始參數設定階段、游戲階段、結局判定階段。
初始參數包括:故障時間、飛船生命值、各角色起始位置和各角色顯示或隱藏狀態。
游戲階段包括守護者運動方式、飛船運動方式、敵人運動方式及與飛船或守護者碰撞引起的參數改變。
結局包括勝利和失敗,不同的結局會出現不同的文字提示,進入結局后,其他角色的顯示和隱藏。
守護者需要被玩家控制去攻擊敵人,這里我們將其設定為月牙形半透明光能武器,月牙的造型可以對圓形使用變形工具,修改出來。將圓下方的點向上拖動,即可形成月牙圖形(如圖2)。

然后使用漸變色填充對其填充顏色,實現透明效果。紅色斜杠表示無顏色,一個顏色選擇無顏色,就可以填充出漂亮的透明效果了(如圖3)。
飛船進入戰場中心后,出現故障停留一段時間,然后繼續運動離開戰場。所以需要設定飛船一開始顯示,從下方滑行到中心點,然后等待一段時間(10秒方便測試),然后向上方繼續移動至邊緣隱藏,游戲勝利,停止全部腳本。
在程序中還可添加造型變化與初始大小設定,最后的移動可以加上等待讓飛船速度不要太快(如圖4)。


守護者需要跟隨鼠標運動,為了方向保持一致,要將守護者造型方向面向默認的右邊。造型中心點也在月牙中心偏右的位置(如圖3)。
跟隨鼠標運動,且面向鼠標方向,可以用運動組的相關積木實現(如圖5)。

按照游戲設定,敵人是從四面八方向飛船進攻,所以敵人的出現位置實際上就是四條邊緣,具體位置完全隨機。所以我們需要先隨機出現四種情況,每種情況代表一條邊緣,具體出現在邊緣上的哪一個點再做一次隨機即可。
因為隨機出來的邊緣選擇需要判斷四次,所以需要一個變量保存下來。然后在四種情況中分別寫入四條邊緣的坐標,即可完成敵人的出現點程序。
每條邊緣都有一個坐標固定,例如上邊緣是Y坐標固定最大,X坐標隨機。以此類推可得出四條邊緣的坐標設定。程序如圖6。
需要注意的是,由于敵人數量很多,因此要使用克隆體,所以運動的應該是克隆體,本體需要隱藏,相應的克隆體需要顯示,因為起點不同,所以方向也不相同,為了避免出現倒立的敵人,我們這里需要將旋轉模式設定為“左右翻轉”,另外為了讓敵人不至于千篇一律,我們可以設定造型切換為隨機造型,大小設定在一個范圍內隨機取值,經過測試,我們這里將大小設定在15到30之間。


本體由于需要等待飛船發生故障時再開始克隆,所以這里我們加上“等待1秒”。每次的克隆間隔我們這里設定的是0.5秒(如圖7)。
敵人的起點設定好后,選擇面向飛船,重復運動直到碰到飛船,即可完成敵人的完整運動。當敵人接觸到飛船,會給飛船扣血,然后消失。若接觸到守護者,則敵人直接消失,這段程序發生在克隆體的運動過程中,所以我們可以將程序寫入克隆體運動程序里面。程序如圖8。
游戲環節進行到最后,勝利或者失敗,需要一個明確的判定標準,我們使用血量來判斷結局,若血量在飛船撤離前歸0,則游戲失敗,若飛船成功撤離,則游戲勝利。
飛船程序中已經有勝利結局的程序了,我們在敵人角色中添加失敗的結局。因為血量等于0時失敗,所以我們需要設定血量的初始值(暫時設為10)(如圖9)。

程序全部完成后,按照慣例進行測試,測試內容包括勝利結局、失敗結局、敵人碰到飛船或守護者是否消失、敵人碰到飛船是否扣且僅扣1點血、飛船運動狀態是否正常、敵人運動狀態是否正常、守護者是否跟隨鼠標運動。
全部沒有問題后,可以將之前為了方便測試的參數進行修改調整,例如血量、飛船故障時間、敵人速度等。
你還可以思考一下,現在敵人是0.5秒出現一個,能不能改成1秒出現一批次隨機個數的敵人呢?