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

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

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

一·脱胎

我学习的案例是飞机大战,经典经典项目。但是鉴于飞机大战,坦克大战这种,已经被大家写烂了,现在你都能找到用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和打击音效。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值