本文摘自電腦報(bào)出品的《Scratch3.9青少年編程高分寶典》一書。你需要綜合應(yīng)用Scratch積木才能實(shí)現(xiàn)預(yù)期效果,完成保護(hù)飛船的小游戲。
游戲背景:太空飛船發(fā)生故障,外星人正從四面八方襲來(lái),你需要操控守護(hù)者,保護(hù)飛船直到修理完畢離開戰(zhàn)場(chǎng)。在飛船安全撤離前,若飛船被毀則游戲失敗,否則游戲勝利。
目標(biāo)分析:根據(jù)背景設(shè)定可知,游戲中要包括飛船、守護(hù)者以及外星人三個(gè)角色。飛船會(huì)留在舞臺(tái)中間一段時(shí)間,等到故障解除,即繼續(xù)往邊緣移動(dòng),移動(dòng)到邊緣即視為脫離戰(zhàn)場(chǎng),游戲勝利。
守護(hù)者由玩家操控,可以消滅敵人,保證飛船血量大于0直到獲得勝利。守護(hù)者造型比較特殊,需要自行繪制。
選擇水母(Jellyfish)作為外星人。外星人由電腦控制,從各個(gè)方向出現(xiàn),并沖向飛船,若擊中飛船則扣除一定血量,若被守護(hù)者擊中,則視為損毀消失,在飛船撤離戰(zhàn)場(chǎng)前,將飛船血量消耗完則視為游戲失敗。
還需要一張?zhí)毡尘皥D,選擇太空(Nebula)背景。
游戲大體分為三個(gè)階段:初始參數(shù)設(shè)定階段、游戲階段、結(jié)局判定階段。
初始參數(shù)包括:故障時(shí)間、飛船生命值、各角色起始位置和各角色顯示或隱藏狀態(tài)。
游戲階段包括守護(hù)者運(yùn)動(dòng)方式、飛船運(yùn)動(dòng)方式、敵人運(yùn)動(dòng)方式及與飛船或守護(hù)者碰撞引起的參數(shù)改變。
結(jié)局包括勝利和失敗,不同的結(jié)局會(huì)出現(xiàn)不同的文字提示,進(jìn)入結(jié)局后,其他角色的顯示和隱藏。
守護(hù)者需要被玩家控制去攻擊敵人,這里我們將其設(shè)定為月牙形半透明光能武器,月牙的造型可以對(duì)圓形使用變形工具,修改出來(lái)。將圓下方的點(diǎn)向上拖動(dòng),即可形成月牙圖形(如圖2)。
然后使用漸變色填充對(duì)其填充顏色,實(shí)現(xiàn)透明效果。紅色斜杠表示無(wú)顏色,一個(gè)顏色選擇無(wú)顏色,就可以填充出漂亮的透明效果了(如圖3)。
飛船進(jìn)入戰(zhàn)場(chǎng)中心后,出現(xiàn)故障停留一段時(shí)間,然后繼續(xù)運(yùn)動(dòng)離開戰(zhàn)場(chǎng)。所以需要設(shè)定飛船一開始顯示,從下方滑行到中心點(diǎn),然后等待一段時(shí)間(10秒方便測(cè)試),然后向上方繼續(xù)移動(dòng)至邊緣隱藏,游戲勝利,停止全部腳本。
在程序中還可添加造型變化與初始大小設(shè)定,最后的移動(dòng)可以加上等待讓飛船速度不要太快(如圖4)。
守護(hù)者需要跟隨鼠標(biāo)運(yùn)動(dòng),為了方向保持一致,要將守護(hù)者造型方向面向默認(rèn)的右邊。造型中心點(diǎn)也在月牙中心偏右的位置(如圖3)。
跟隨鼠標(biāo)運(yùn)動(dòng),且面向鼠標(biāo)方向,可以用運(yùn)動(dòng)組的相關(guān)積木實(shí)現(xiàn)(如圖5)。
按照游戲設(shè)定,敵人是從四面八方向飛船進(jìn)攻,所以敵人的出現(xiàn)位置實(shí)際上就是四條邊緣,具體位置完全隨機(jī)。所以我們需要先隨機(jī)出現(xiàn)四種情況,每種情況代表一條邊緣,具體出現(xiàn)在邊緣上的哪一個(gè)點(diǎn)再做一次隨機(jī)即可。
因?yàn)殡S機(jī)出來(lái)的邊緣選擇需要判斷四次,所以需要一個(gè)變量保存下來(lái)。然后在四種情況中分別寫入四條邊緣的坐標(biāo),即可完成敵人的出現(xiàn)點(diǎn)程序。
每條邊緣都有一個(gè)坐標(biāo)固定,例如上邊緣是Y坐標(biāo)固定最大,X坐標(biāo)隨機(jī)。以此類推可得出四條邊緣的坐標(biāo)設(shè)定。程序如圖6。
需要注意的是,由于敵人數(shù)量很多,因此要使用克隆體,所以運(yùn)動(dòng)的應(yīng)該是克隆體,本體需要隱藏,相應(yīng)的克隆體需要顯示,因?yàn)槠瘘c(diǎn)不同,所以方向也不相同,為了避免出現(xiàn)倒立的敵人,我們這里需要將旋轉(zhuǎn)模式設(shè)定為“左右翻轉(zhuǎn)”,另外為了讓敵人不至于千篇一律,我們可以設(shè)定造型切換為隨機(jī)造型,大小設(shè)定在一個(gè)范圍內(nèi)隨機(jī)取值,經(jīng)過(guò)測(cè)試,我們這里將大小設(shè)定在15到30之間。
本體由于需要等待飛船發(fā)生故障時(shí)再開始克隆,所以這里我們加上“等待1秒”。每次的克隆間隔我們這里設(shè)定的是0.5秒(如圖7)。
敵人的起點(diǎn)設(shè)定好后,選擇面向飛船,重復(fù)運(yùn)動(dòng)直到碰到飛船,即可完成敵人的完整運(yùn)動(dòng)。當(dāng)敵人接觸到飛船,會(huì)給飛船扣血,然后消失。若接觸到守護(hù)者,則敵人直接消失,這段程序發(fā)生在克隆體的運(yùn)動(dòng)過(guò)程中,所以我們可以將程序?qū)懭肟寺◇w運(yùn)動(dòng)程序里面。程序如圖8。
游戲環(huán)節(jié)進(jìn)行到最后,勝利或者失敗,需要一個(gè)明確的判定標(biāo)準(zhǔn),我們使用血量來(lái)判斷結(jié)局,若血量在飛船撤離前歸0,則游戲失敗,若飛船成功撤離,則游戲勝利。
飛船程序中已經(jīng)有勝利結(jié)局的程序了,我們?cè)跀橙私巧刑砑邮〉慕Y(jié)局。因?yàn)檠康扔?時(shí)失敗,所以我們需要設(shè)定血量的初始值(暫時(shí)設(shè)為10)(如圖9)。
程序全部完成后,按照慣例進(jìn)行測(cè)試,測(cè)試內(nèi)容包括勝利結(jié)局、失敗結(jié)局、敵人碰到飛船或守護(hù)者是否消失、敵人碰到飛船是否扣且僅扣1點(diǎn)血、飛船運(yùn)動(dòng)狀態(tài)是否正常、敵人運(yùn)動(dòng)狀態(tài)是否正常、守護(hù)者是否跟隨鼠標(biāo)運(yùn)動(dòng)。
全部沒有問題后,可以將之前為了方便測(cè)試的參數(shù)進(jìn)行修改調(diào)整,例如血量、飛船故障時(shí)間、敵人速度等。
你還可以思考一下,現(xiàn)在敵人是0.5秒出現(xiàn)一個(gè),能不能改成1秒出現(xiàn)一批次隨機(jī)個(gè)數(shù)的敵人呢?