2023年下半年到2024年初,大约6个月左右,使用古老的Java Swing,山寨了一个Windows平台,坦克大战豪华版的小游戏,博客阅读寥寥无几……
0.游戏效果图
1.游戏窗口
创建一个JFrame即可,所有的绘制都是在这个JFrame类paint(Graphics g)方法中实现的,只是用的是kt语言实现,这里代码举例是java语言。
public class GameWindow extends JFrame {
@Override
public void paint(Graphics g) {
}
}
2.实现地图
地图是用瓦片贴图拼接实现的,瓦片是最小,不可分割的地图单位,共5种,砖块、草地、铁块、雪地、河流。目前缺少雪地,取色并绘制矩形实现,草地略复杂。
3.玩家坦克
玩家坦克,一开始代码手绘了坦克,矩形+圆形+矩形,非常简陋,后来使用代码绘制好后,保存为图片,上下左右各一张。按不同的方向键,向不同的方向行走,切换不同的图片。 玩家坦克,按方向键进行控制,实现坦克4个方向的移动,按ctrl键发射炮弹。
4.敌军坦克
1). 开始敌军坦克,也是代码绘制,后来考虑到美观,就从游戏视频中截图敌军坦克,然后使用gimp软件抠图,实现了敌军坦克的美化,顺带练习了抠图。
2). 敌军坦克,在游戏循环中自主移动、发射炮弹,遇到障碍物或墙拐弯。
5.发射炮弹,消除地图
- 坦克一边前进,一边检测前方的障碍物,如砖块、钢铁、河流,如果有,坦克不能继续前进。
- 坦克发射炮弹,炮弹碰撞到砖块后,砖块消除1层。
6.玩家和敌军互相消灭
玩家坦克和敌军坦克互相发射炮弹,双方炮弹相撞会抵消,如果被对方炮弹击中,会爆炸消失。
7.关卡实现
关卡地图以文本形式存储到文件中,不同的数字代表不同的瓦片,不同的数字布局就形成了不同的地图。
8.过关逻辑实现
当一个关卡中,敌军坦克全部被消灭,玩家坦克生命大于0并且基地完好,则过关。
9.代码仓库
9.1
目前在release中有一个发布的版本,下载后,解压缩,得到一个jar文件和一个地图文件夹,打开终端,在jar文件所在路径,执行java -jar WarOfTank.jar即可开始游戏了。
csdn有更详细的一些的博客介绍,可以参考Java Swing实现坦克大战