Java Swing手搓坦克大战遇到的问题和思考

1.游戏中的坐标系颇为复杂

像素坐标系还有行列坐标,都要使用,这之间的互相转化使用也要注意

2.游戏中坦克拐弯的处理,非常重要

由于坦克中心点是要严格对齐到一条网格线,并沿着这条线前进的,如果拐弯不做处理,很可能坦克就不再对齐到网格线了。这将影响炮弹的发射和消除瓦片地图的功能实现。

3.关于坦克前进的步进问题

  看到一个NB闪闪的坦克大战游戏制作视频,在视频中作者的坦克前进也是一格一格的,这样其实体验是非常糟糕的,卡顿感,非常明显,可是作者的思路是利用补间动画解决了这个问题,我惊呆了。值的观摩和学习。目前是较小固定像素个数不断前进。

  之前看过一个视频也是讲这个问题的,作者却没说这个问题,很迷惑,因为自己实现了以后发现,问题很严重。走一步,跨一格,卡的不能看。

  上面这2个视频是从B站看到的,前者是C++调用EasyX实现。后者是C语言直接调用Windows图形API实现。
在这里插入图片描述在这里插入图片描述

4.游戏效果视频

这个视频就是目前的最终效果

业余手搓坦克大战游戏

5.剩余项目计划

目前为止已实现地图,玩家坦克在地图中行走。初步打算完成第5步后发布第一个版本,已经完成。
下一步,

  • 1.玩家发射炮弹
  • 2. 炮弹命中地图瓦片的爆炸效果、逻辑处理
  • 3. 敌军坦克诞生、行走、发射炮弹
  • 4. 双方炮弹碰撞抵消,被炮弹击中爆炸效果、逻辑实现
  • 5. 游戏game over逻辑处理
  • 6. 玩家消灭坦克或吃道具的分数计算
  • 7. 道具对玩家坦克外观和炮弹火力影响
  • 8. 道具的出现位置和动画逻辑
  • 9. 关卡地图的实现
  • 10. 过关的处理
  • 11.严重bug的修复
  • 12.玩家坦克交互优化
  • 13. …还有很多
  • 14.敌军坦克偶尔跑出窗口出现数组下标越界bug

5.5进度

  • 2024-02-07 v1.0.0版本发布
    基本完成了项目的功能,不过道具这个功能还是没有实现。
  • 2024-02-20 v1.0.1版本发布
  • 2024-02-22 v1.0.2版本发布

在gitee或github的release中可以下载对应的版本,链接可以参考前面的文章。

5.6棘手的bug

  • 敌军坦克有时候被挤到窗口外面去,由于敌军相互碰撞会后撤,导致了这个问题,一时没有太好的解决思路。

6.思考

  1. 2个运动的物体如何判断碰撞更高效,怎样避免不必要的判断?
  2. 敌军坦克寻找基地和玩家坦克,是不是涉及到寻路算法(A*…)
  3. 物理系统如何应用到游戏中
  4. 2022、2023至今AI已经如此成熟,写代码也是轻车熟路,我还在用古老的技术尝试开发2D游戏,真的有必要吗?意义大吗?
  5. …还有一些

在这里插入图片描述新版game over
在这里插入图片描述

7.感悟

刚开始觉得坦克大战还是很容易的,没想到后续做起来还是挺复杂的工程。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值