陳新龍
小時候能夠花點錢在小賣部游戲機上玩一下午那是非常開心的事情,當(dāng)時最吸引我的是坦克大戰(zhàn),因為可以和哥哥雙人PK,為了美好的童年回憶,今天就和大家一起用Scratch完成坦克大戰(zhàn)吧。
游戲分為紅藍兩方,兩個玩家分別通過方向鍵和WASD鍵控制坦克方向。和其他游戲的方向控制方式不同,坦克的運動方式是上下鍵控制坦克前進和后退,左右鍵控制坦克旋轉(zhuǎn)(左鍵逆時針旋轉(zhuǎn),右鍵順時針旋轉(zhuǎn))。
與原版的坦克大戰(zhàn)不同,游戲地圖的障礙物無法破壞,但可以反彈炮彈。這樣在游戲中玩家可以利用地形打擊對方,使游戲的可玩性大大提升。相應(yīng)的我們針對炮彈的射程也做了適當(dāng)限制,這樣當(dāng)炮彈擊中障礙物后不會無限反彈。
1. 繪制地圖
首先自己在背景中繪制地圖,不同的背景地圖相當(dāng)于游戲的關(guān)卡,選擇合適的顏色與適當(dāng)粗細的線段畫出來就可以了,你可以繪制多張地圖隨機調(diào)用(圖1)。
2. 坦克代碼
坦克代碼首先要實現(xiàn)運動控制功能。首先對紅色坦克編程,當(dāng)玩家按下上下鍵時坦克前進或后退5步。為了控制坦克旋轉(zhuǎn)角度,設(shè)置新的變量“紅色坦克方向”,用面向“變量”方向的積木實現(xiàn)方向控制(圖2)。
在繪制坦克圖形時有個小技巧,我們將坦克的前后兩部分的外邊設(shè)置成了不同的顏色,這樣就可以偵測出當(dāng)坦克向前移動時撞到墻壁后自動倒退5步,完成停止不動的效果,后退也是相同的原理(圖3)。
3. 炮彈代碼
當(dāng)兩個玩家按下空格鍵和J鍵便可分別發(fā)射黃色的炮彈,炮彈擊中敵方的坦克和誤傷到自己都會扣10滴生命值。當(dāng)炮彈碰到墻壁后根據(jù)入射角度反彈。
對紅色的炮彈編程,按下空格鍵,首先炮彈面向坦克移動的方向,移動到紅色坦克后,注意這時要再繼續(xù)移動40步,這樣炮彈才像是從炮管前端發(fā)射出去的。廣播“發(fā)射炮彈”。碰到坦克角色后扣除血量(圖4)。
在接收到“發(fā)射炮彈”廣播中處理炮彈碰到墻壁后的反饋。需要根據(jù)不同的角度進行反彈,根據(jù)不同入射角度我寫了兩種反彈方式,大家也可以自行推導(dǎo)。
第一種當(dāng)炮彈從右上角40度方向發(fā)射,碰到墻壁后,可能會反彈到-40度左上角方向。炮彈方向由原來的X度變成了-X度(圖5、6)。
第二種當(dāng)炮彈從右上角40度方向發(fā)射,碰到墻壁后,可能會反彈到140度右下角方向。面向的方向由原來的X度變成了180-X度(圖7、8)。
這樣一個簡單又經(jīng)典的坦克大戰(zhàn)游戲就完成了,我們也可以在此基礎(chǔ)上加上一些關(guān)卡,通過設(shè)置不同的背景圖案進行紅藍兩方的防守與攻擊的較量,調(diào)試成功后拉著小伙伴一起玩吧。