今天总算是把这个炸弹人小游戏给捣鼓出来了,过程那叫一个折腾。一开始就是寻思着,小时候玩红白机那会儿,炸弹人可是我的最爱,就想着自己也来整一个,怀旧一把。
上手开干
我就琢磨这个地图咋弄。这玩意儿不就是个格子套格子嘛所以我就直接用个二维数组来表示地图了。墙壁、可以炸掉的砖块,都用不同的数字代表,简单粗暴,好使!
然后就是那个小人儿,得能在地图上溜达。我先是让他能上下左右移动,碰到墙就不能走了。这个还算顺利,没费多大劲儿。
接下来就是重头戏——放炸弹!按个键,小人脚底下就“咚”的一声(还没声音)放下个炸弹。这炸弹不能立刻炸,得等个几秒钟,这好办,搞个计时器就行。
最麻烦的爆炸效果
要说最烦人的,还得是炸弹爆炸那一下。一开始我想简单点,炸弹时间到了,就消失,然后把周围的砖块给清掉。但这样一点都不酷炫!炸弹人那经典的十字形火焰,那才是灵魂!
为了这个十字火焰,我可没少掉头发。得计算火焰能延伸多远,碰到墙壁就得停下来,不能穿墙。要是炸到其他炸弹,还得连锁引爆,那场面才叫一个刺激。光这个逻辑,我就调了好几天,改来改去,烦死了。
- 得判断炸弹威力,就是能炸多远。
- 然后上下左右四个方向分别延伸,碰到硬墙就停。
- 如果炸到软砖块,砖块消失,火焰继续。
- 如果炸到其他炸弹,直接把那个炸弹的引爆计时器清零,让它也立马炸。
写代码的时候,边界条件特别多,稍微不注意,火焰就炸出屏幕外了,或者直接把自己给卡死了。真的,debug的时候,我差点把键盘给砸了。
添砖加瓦
地图上的砖块被炸掉后,总得掉点啥?我就简单设置了一下,随机掉一些增强道具,比如增加同时放置炸弹的数量,或者增加炸弹的威力范围。这样玩起来才有意思嘛
本来还雄心壮志地想加点敌人,就是那种会在地图里瞎逛的小怪兽。结果试着写了写AI,发现比我想象的复杂多了,那些怪兽跟傻子一样到处撞墙,要么就站着不动。搞了半天,还是放弃了,想着以后有空再说,先把核心的PVP(虽然现在只能自己跟自己P)或者PVE(打砖块)做好就得了。
至于画面和音效嘛咳咳,这个就比较粗糙了。美术资源都是网上随便扒拉的像素图,拼凑着用,看着不至于太辣眼睛就行。音效也是,找了几个“爆炸”声、“放炸弹”声,凑合着用。毕竟咱也不是专业美术和音效师不是?主要还是体验那个过程。
3
折腾了差不多一个星期,这个简陋版的炸弹人总算是能跑起来了。虽然还有很多不完善的地方,比如没有真正的敌人,没有计分,道具种类也少得可怜,但是当自己控制小人放下第一个炸弹,看着十字火焰炸开一堆砖块的时候,那成就感还是满满的。
别看这小游戏好像挺简单的,真自己从头到尾做一遍,里面的坑还真不少。不过踩过这些坑,也算是学到不少东西。下一步?或许可以优化下爆炸的判定,或者真把敌人给加上?谁知道,先玩几把爽爽再说!