当前位置: 首页 > news >正文

边学边做边玩:我的类魂斗罗Java小游戏与Java学习(1)

用 JavaSwing 开发经典横版射击游戏:从 0 到 1 实现简易 Contra-like 游戏-CSDN博客

很高兴看到我练手的小游戏能收到这么多学习者的欢迎,我将在此篇分享我的开发日志。

一·脱胎

我学习的案例是飞机大战,经典经典项目。但是鉴于飞机大战,坦克大战这种,已经被大家写烂了,现在你都能找到用MySQL写的离谱版本,或者3D版的坦克大战。但是横板游戏好像没看到有几个人做,我便想主动探索下这个领域。当然,我没有用任何游戏引擎。我是来学Java和普适性代码思想的,不是单纯来想做游戏的。

一个经典复刻让我有了注意。

二·起手

最开始的,当然是贴个背景。我找不到那么长的好图片,直接把一张图片扩展成三张,然后让它随着人物的移动反方向移动来展示人物的移动。

这张很有非洲风情的日落草原成了答案。

然后是贴人物,贴敌人。主角我直接用了原作的矢量图,敌人。。。换个色就行了。

                                        

我采用BackgroundPanel和PersonPanel两个底板来装底部图片和其他元素,实现谁也不撞谁各玩各的。

对于本人的人物,我使用了Person类(其实这块有点打包不严,毕竟Enemy类是改写的Person类)。

人物当然有x,y,生命,动作状态,移动速度与方向等等。

ContraLListener.java就被用于进行监听,左右,跳,各种攻击啥的。具体的实现可以去看源代码。

对于资源在哪里可以找到,我推荐一网站(翻墙会更快)。

Download Free Vectors, Clipart Graphics, Vector Art & Design Templates

三·动作

Bullet是一个子弹类,我把它画在了PersonPanel,方便撞击。

伤害调用人物的受伤代码。

两个人物又有不同的攻击方式,比如,枪托向上,雷斯飞肘,西德琳的激光(能全看懂这几个的你的成分也和我一样复杂...)

分别在受伤那个地方填入不同的值就好了。

注意你在做伤害的时候是想让人物“泡在激光里”按帧计算伤害还是在打到的唯一一下判断伤害,否则你将在一下的攻击力泡几十帧...

四·线程

ThreadContraL类是线程控制类,主要负责往里面扔各种东西。。。

比如move啊,伤害判定啊,敌人行为啊,你甚至不用看顺序...

五·敌人AI

这部分直接一个巨大的Random比大小+ifelse...

把雷斯飞肘和跳跃激光调小一点就好了吗。

六·声音

使用javazoom库,导入了声音的调控,实现了播放bgm和打击音效。

http://www.dtcms.com/a/329986.html

相关文章:

  • 《MySQL 实战:从建库建表到复杂查询的完整操作指南》
  • Android Framework定制长按电源键关机的窗口
  • 9 ABP Framework 中的 MVC 和 Razor Pages
  • Java pdf工具
  • jvm学习笔记之jvm的生命周期和发展历程
  • Video_AVI_Packet(2)
  • 全球AI安全防护迈入新阶段:F5推出全新AI驱动型应用AI安全解决方案
  • 量子安全新纪元:F5发布全新AI驱动的全栈式后量子加密AI安全方案
  • OpenJDK 17 源码 安全点轮询的信号处理流程
  • ESP-IDF 编译系统说明
  • 单细胞测序分析平台在肿瘤免疫微环境研究中的应用
  • javascript学习
  • element-ui 树形结构的table,自定义展开收起小箭头所在的列
  • 若依前后端分离版学习笔记(九)——登录和操作日志
  • Pyside6 核心模块随笔
  • VS2022+QT5.15.2+OCCT7.9.1的开发环境搭建流程
  • Pytest+selenium UI自动化测试实战实例(超详细)
  • 【css】让浏览器支持小于12px的文字
  • 各种排序算法(二)
  • OpenBMC中的BMCWeb:架构、原理与应用全解析
  • 焊接工业机器人节气装置
  • Apple 的 GPU 加速框架
  • JavaWeb(05)
  • 汽车免拆诊断案例 | 2017 款丰田皇冠车行驶中加速时车身偶尔抖动
  • 【ARM】keil提示UVISION: Error: Encountered an improper argument
  • PCBA:电子产品制造的核心环节
  • Video_AVI_Packet(1)
  • Linux服务器启动应用缓慢的解决方案
  • 车载网关助力无人配送车联网解决方案
  • Linux系统之ELF文件