Scratch小游戲——貪吃蛇

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

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

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

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

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

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

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