陈新龙
小时候能够花点钱在小卖部游戏机上玩一下午那是非常开心的事情,当时最吸引我的是坦克大战,因为可以和哥哥双人PK,为了美好的童年回忆,今天就和大家一起用Scratch完成坦克大战吧。
游戏分为红蓝两方,两个玩家分别通过方向键和WASD键控制坦克方向。和其他游戏的方向控制方式不同,坦克的运动方式是上下键控制坦克前进和后退,左右键控制坦克旋转(左键逆时针旋转,右键顺时针旋转)。
与原版的坦克大战不同,游戏地图的障碍物无法破坏,但可以反弹炮弹。这样在游戏中玩家可以利用地形打击对方,使游戏的可玩性大大提升。相应的我们针对炮弹的射程也做了适当限制,这样当炮弹击中障碍物后不会无限反弹。
1. 绘制地图
首先自己在背景中绘制地图,不同的背景地图相当于游戏的关卡,选择合适的颜色与适当粗细的线段画出来就可以了,你可以绘制多张地图随机调用(图1)。
2. 坦克代码
坦克代码首先要实现运动控制功能。首先对红色坦克编程,当玩家按下上下键时坦克前进或后退5步。为了控制坦克旋转角度,设置新的变量“红色坦克方向”,用面向“变量”方向的积木实现方向控制(图2)。
在绘制坦克图形时有个小技巧,我们将坦克的前后两部分的外边设置成了不同的颜色,这样就可以侦测出当坦克向前移动时撞到墙壁后自动倒退5步,完成停止不动的效果,后退也是相同的原理(图3)。
3. 炮弹代码
当两个玩家按下空格键和J键便可分别发射黄色的炮弹,炮弹击中敌方的坦克和误伤到自己都会扣10滴生命值。当炮弹碰到墙壁后根据入射角度反弹。
对红色的炮弹编程,按下空格键,首先炮弹面向坦克移动的方向,移动到红色坦克后,注意这时要再继续移动40步,这样炮弹才像是从炮管前端发射出去的。广播“发射炮弹”。碰到坦克角色后扣除血量(图4)。
在接收到“发射炮弹”广播中处理炮弹碰到墙壁后的反馈。需要根据不同的角度进行反弹,根据不同入射角度我写了两种反弹方式,大家也可以自行推导。
第一种当炮弹从右上角40度方向发射,碰到墙壁后,可能会反弹到-40度左上角方向。炮弹方向由原来的X度变成了-X度(图5、6)。
第二種当炮弹从右上角40度方向发射,碰到墙壁后,可能会反弹到140度右下角方向。面向的方向由原来的X度变成了180-X度(图7、8)。
这样一个简单又经典的坦克大战游戏就完成了,我们也可以在此基础上加上一些关卡,通过设置不同的背景图案进行红蓝两方的防守与攻击的较量,调试成功后拉着小伙伴一起玩吧。