塔防游戏 第六集
本集主要实现了游戏的关卡处理和金币系统。
关卡处理
绘制一个开始按钮放置在画面左上方。我们希望在游戏开始时,或者一波关卡结束之后可以点击这个按钮,生成新一个关卡的敌人。我们新建一个全局变量关卡。游戏开始时关卡默认为0,每次开启一个新的关卡让这个变量+1。
我们给按钮做一些点击的特效,让它在鼠标挪动在上面时有一个变暗的效果。
当可以开启关卡的时候,触发一个广播新关卡,为了让它不一直广播加上等待抬起鼠标。当敌人接收到关卡数量的变化之后,就可以克隆自己了。
此时我们再点击关卡按钮的话,关卡数量还会变化。所以我们需要一个判断,在这个关卡敌人全部刷新完并且场上不存在敌人之后再允许新关卡。
我们设定两个全局变量,可以开启下一关存放是否允许开启下一关,敌人生成完毕存放敌人是否完成生成。在游戏开始时,这两个变量都被设定为yes,接受到新关卡命令后设置为no。当敌人生成完毕后将敌人生成完毕设置为yes。
当关卡内不存在敌人且场上没有敌人,即敌人编号列表为空时,可以开启下一关设置为yes。
当新关卡开始时,重置这两个变量为no。同时将按钮的亮度调低,表示不可点击。
金币系统
塔防游戏中的资源管理是游戏重要的一部分。游戏开始时有一个金币的初始值给玩家布置炮台,每击杀一个敌人和完成一个敌人波次都会获得金币奖励,而布置炮台需要消耗金币。接下来我们来完成这个逻辑。
我们设置一个全局变量金币,存放我们当前的金币数量。在游戏开始时,将金币数量设置为100,也可以自行修改这个值。
我们将现在的普通炮台的价格设为50金币,只有在金币足够时,才可以选中炮塔准备布置。在选中炮台后扣除金币。
对于击杀敌人奖励金币时,我们需要对以前的代码进行修改。敌人的死亡有两种情况:敌人被炮台击杀,或者碰到地图边缘。碰到地图边缘属于逃跑,是不应该奖励金币的。所以我们对这两种情况分开处理。
接下来是敌人波次结束后奖励金币。我们刚才新建的可以开启下一关部分的调整就是在关卡结束后的,我们在这里新建一个广播来控制关卡结束后的操作。现在完成的是奖励金币,之后也可以做一些特效,比如撒花之类的。
总结
本集课程我们完成了开始按钮,敌人波次和金币系统,完善了游戏的逻辑和游戏性。