Scratch經(jīng)典游戲之坦克大戰(zhàn)
文/陳新龍
小時(shí)候能夠花點(diǎn)錢(qián)在小賣部游戲機(jī)上玩一下午那是非常開(kāi)心的事情,當(dāng)時(shí)最吸引我的是坦克大戰(zhàn),因?yàn)榭梢院透绺珉p人PK,為了美好的童年回憶,今天就和大家一起用Scratch完成坦克大戰(zhàn)吧。
游戲分為紅藍(lán)兩方,兩個(gè)玩家分別通過(guò)方向鍵和WASD鍵控制坦克方向。和其他游戲的方向控制方式不同,坦克的運(yùn)動(dòng)方式是上下鍵控制坦克前進(jìn)和后退,左右鍵控制坦克旋轉(zhuǎn)(左鍵逆時(shí)針旋轉(zhuǎn),右鍵順時(shí)針旋轉(zhuǎn))。
與原版的坦克大戰(zhàn)不同,游戲地圖的障礙物無(wú)法破壞,但可以反彈炮彈。這樣在游戲中玩家可以利用地形打擊對(duì)方,這樣游戲的可玩性大大提升。相應(yīng)的我們針對(duì)炮彈的射程也做了適當(dāng)限制,這樣當(dāng)炮彈擊中障礙物后不會(huì)無(wú)限反彈。
1.?繪制地圖
首先自己在背景中繪制地圖,不同的背景地圖相當(dāng)于游戲的關(guān)卡,選擇合適的顏色與適當(dāng)?shù)拇旨?xì)的線段畫(huà)出來(lái)就可以了,你可以繪制多張地圖隨機(jī)調(diào)用(圖1)。

?
2.?坦克代碼
坦克代碼首先要實(shí)現(xiàn)運(yùn)動(dòng)控制功能。首先對(duì)紅色坦克編程,當(dāng)玩家按下上下鍵時(shí)坦克前進(jìn)或后退5步。為了控制坦克旋轉(zhuǎn)角度,設(shè)置新的變量“紅色坦克方向”,用面向“變量”方向的積木實(shí)現(xiàn)方向控制(圖2)。
?

在繪制坦克圖形時(shí)有個(gè)小技巧,我們將坦克的前后兩部分的外邊設(shè)置成了不同的顏色,這樣就可以偵測(cè)出當(dāng)坦克向前移動(dòng)時(shí)撞到墻壁后自動(dòng)倒退五步,完成停止不動(dòng)的效果,后退也是相同的原理(圖3)。
?

坦克前后兩部分外邊顏色不同
3.?炮彈代碼
當(dāng)兩個(gè)玩家按下空格鍵和J鍵便可分別發(fā)射黃色的炮彈,炮彈擊中敵方的坦克和誤傷到自己都會(huì)扣十滴生命值。當(dāng)炮碰到墻壁后根據(jù)入射角度反彈。
對(duì)紅色的炮彈編程,按下空格鍵,首先炮彈面向坦克移動(dòng)的方向,移動(dòng)到紅色坦克后,注意這時(shí)要再繼續(xù)移動(dòng)40步,這樣炮彈才像是從炮管前端發(fā)射出去的。廣播“發(fā)射炮彈”。碰到的坦克角色后扣除血量(圖4)。
?

在接受到“發(fā)射炮彈”廣播中處理炮彈碰到墻壁后的反饋。需要根據(jù)不同的角度進(jìn)行反彈,根據(jù)不同入射角度我寫(xiě)了兩種反彈方式,大家也可以自行推導(dǎo)。
第一種當(dāng)炮彈從右上角40度方向發(fā)射炮彈,碰到墻壁后,可能會(huì)彈反到-40度左上角方向。炮彈方向由原來(lái)的X度變成了-X度(圖5、6)。
?


第二種當(dāng)炮彈從右上角40度方向發(fā)射炮彈后,碰到墻壁后,可能會(huì)彈反到140度右下角方向。面向的方向由原來(lái)的X度變成了180-X度(圖7、8)。
?


這樣一個(gè)簡(jiǎn)單又經(jīng)典的坦克大戰(zhàn)游戲就完成了,我們也可以在此基礎(chǔ)上加上一些關(guān)卡,通過(guò)設(shè)置不同的背景圖案進(jìn)行紅藍(lán)兩方的防守與攻擊的較量,調(diào)試成功后拉著小伙伴一起玩吧。
