Scratch小游戲——貪吃蛇

文/陳新龍
小時(shí)候我接觸到的第一款游戲就是諾基亞手機(jī)中的貪吃蛇,那個(gè)時(shí)候貪吃蛇還是一款像素化的休閑益智類游戲,簡(jiǎn)單耐玩。貪吃蛇最初是單機(jī)版,后來慢慢演變了聯(lián)機(jī)版的貪吃蛇大作戰(zhàn)。從一條小蛇開始在吃能量和打敗對(duì)手的過程中不斷成長(zhǎng),此之還發(fā)展出團(tuán)戰(zhàn)模式、賞金模式、挑戰(zhàn)模式等多種玩法。
貪吃蛇游戲的基本核心是,吃到東西后蛇的身體會(huì)變長(zhǎng)。這款Scratch版貪吃蛇中我們用方向鍵控制蛇的移動(dòng),吃掉蘋果后,會(huì)在舞臺(tái)隨機(jī)位置刷新一個(gè),吃到蘋果就可以得到積分,并且積分越高貪吃蛇身體越長(zhǎng)。在游戲中,貪吃蛇還擁有穿墻功能,當(dāng)貪吃蛇頭部碰到舞臺(tái)邊緣(墻壁)時(shí),它會(huì)從舞臺(tái)對(duì)面爬出來??靵砗臀乙黄饎?dòng)手完成這個(gè)簡(jiǎn)單的小游戲吧(圖1)。
??

1.?繪制造型
在編寫代碼之前我們要自己繪制一個(gè)貪吃蛇的造型,不需要從網(wǎng)上找貪吃蛇的圖案,選擇角色庫中的Ball角色,然后進(jìn)入造型界面中給自己心愛的貪吃蛇填充顏色,加上兩個(gè)圓圓的大眼睛。注意眼睛的角度方向,如圖2所示。我們只需要畫一個(gè)頭就可以了,至于貪吃蛇的身體怎么畫,不要著急往下看你就知道了(圖2)。
?

2.?方向控制
返回代碼窗口開始編寫程序,貪吃蛇的移動(dòng)通過上下左右的按鍵來操作,移動(dòng)步數(shù)為5步,當(dāng)按下“上”鍵時(shí),面向方向0度;下鍵,面向方向180度;左鍵,面向方向-90度;右鍵,面向方向90度。如果在設(shè)計(jì)造型時(shí)和圖2的眼睛方向不同,就需要根據(jù)自己繪制的圖形調(diào)整貪吃蛇的轉(zhuǎn)向角度了(如圖3)。
?

?
3.?實(shí)現(xiàn)穿墻功能
我們只需要一個(gè)精巧的設(shè)計(jì)就可以很快速的實(shí)現(xiàn)穿墻功能。我們已經(jīng)知道舞臺(tái)的大小是寬480高360。重復(fù)偵測(cè)貪吃蛇的坐標(biāo)位置,當(dāng)偵測(cè)到Y(jié)坐標(biāo)超過180或X坐標(biāo)超過240時(shí)我們就可以斷定貪吃蛇爬到了舞臺(tái)邊緣。這時(shí)改變坐標(biāo)的正負(fù)號(hào),比如當(dāng)Y坐標(biāo)大于180時(shí),將貪吃蛇的Y坐標(biāo)調(diào)整成-180,同理Y坐標(biāo)小于-180時(shí),將貪吃蛇的Y坐標(biāo)調(diào)整為180;X坐標(biāo)大于240時(shí),將X坐標(biāo)調(diào)整成-240,X坐標(biāo)小于-240時(shí),將X坐標(biāo)調(diào)整成240。這樣貪吃蛇就會(huì)出現(xiàn)在舞臺(tái)的對(duì)面了(圖4)。
?

4.?貪吃蛇的成長(zhǎng)
如何讓貪吃蛇身體的邊長(zhǎng)是這個(gè)游戲的核心,這里我用的方法就是克隆。首先重復(fù)克隆自身,設(shè)定一個(gè)變量“身體長(zhǎng)度”為5,當(dāng)克隆體啟動(dòng)時(shí)等待時(shí)間設(shè)置為:身體長(zhǎng)度*0.05,之后刪除這個(gè)克隆體。通過這個(gè)變量控制克隆體存在的時(shí)間就可以控制貪吃蛇身體的長(zhǎng)度了,而乘以0.05是將積分轉(zhuǎn)化為身體長(zhǎng)度的比例(圖5)。
?

5.?蘋果的代碼
添加蘋果角色,新增加變量“吃掉蘋果的數(shù)量”用來顯示獲得的積分。程序開始后,將該變量設(shè)為0,蘋果為隱藏狀態(tài)。移動(dòng)到隨機(jī)位置,等待0.5秒后,將蘋果顯示出來。
重復(fù)執(zhí)行當(dāng)蘋果碰到貪吃蛇后,“吃掉蘋果的數(shù)量”加1,“身體的長(zhǎng)度”也增加1,并且暫時(shí)隱藏起來,等待0.5秒以后再次顯示(圖6)。
?

貪吃蛇這款小游戲難度不高,知識(shí)點(diǎn)主要是穿墻的技巧和通過控制克隆體存在時(shí)間控制身體的長(zhǎng)度。但是這樣簡(jiǎn)單的實(shí)現(xiàn)效果也為后續(xù)的升級(jí)埋下了隱患。貪吃蛇游戲還有一個(gè)核心規(guī)則,不能吃到自己的身體。當(dāng)使用克隆體作為身體時(shí)不管是使用顏色還是使用角色作為偵測(cè)手段都很難正確的判斷是否碰到自己的尾巴。大家可以思考一下有沒有其他方法來完成身體部分,比如用畫筆就更容易判斷但視覺效果又差了一截。