Java游戏——飞机大战(免费开源)

时间:2024-04-08 18:39:47

飞机大战

1 项目概述

想分享这个项目主要原因是因为自己在做项目的时候发现网上的资源大部分都是要钱的,想想这个项目也不是多难居然也要钱,后来做完了为了方便后来的人参考一下,就有了将这个项目开源的想法,项目代码将会放在GitHub上而不是CSDN(CSDN下载资源是真的坑)。同时我也会写上一些项目的思路和想法来帮助大家理解,程序里面也有注释,当然不会是一行一个注释,但是也是方便了有一定基础的同学,话不多说,直接开始。

2 需求分析

2.1 基本要求:

①能展示出飞机和敌机的图片并能够移动
② 能够发射子弹并且集中敌机后敌机消失
③ 有着分数机制
④ 要求有生命限制,当撞到一定次数会失败

2.2提高要求:

① 在不同场景有声音播放
② 敌机爆炸有更好的效果而不是直接消失
③ 有一定的奖励物品机制,如加生命或者加强火力

2.3更高要求:

① 有不同类型的敌机,比如样子和生命值
② 有开始登录界面以及结束画面
③通过jdbc将相关分数信息存放到MySQL数据库中
④有用户登录界面
⑤彩蛋界面,游戏怎么能够没有彩蛋呢?

2.4 流程图

Java游戏——飞机大战(免费开源)
上图是本项目的程序流程图,当打开程序时,用户首先要做的是登录或者注册自己的账户,在这之后便是开始游戏,当游戏用户的飞机损失掉一定量的生命值之后,游戏程序也就终止,可以根据用户意愿选择退出或者重新进行游戏

3实现方案

3.1核心类FlyingObject

Java游戏——飞机大战(免费开源)
所有敌机和我方的小飞机都是可以抽象成一种飞行物,所以我们设计了一个父类:FlyingObject,之后所有的飞行物都继承自这个类。这里面有着各个飞行物的基本属性。
同时,我们在这里面还加入了判定子弹是否击中敌机的方法,即判断相应的x,y坐标是否重合。

3.2我方小飞机Hero

Java游戏——飞机大战(免费开源)
Java游戏——飞机大战(免费开源)
Java游戏——飞机大战(免费开源)
我方飞机继承自FlyingObject类,同时应该具有检测碰撞和发射子弹的功能。检测碰撞由hit方法来实现,实现思想与父类中的检测碰撞思想类似。
发射子弹功能由调用Bullet类来实现,并会根据不同的火力来生成不同的发射位置。
飞机的移动由监听鼠标的移动来实现,实时获取鼠标的XY值。

3.3 敌方飞机类Airplane

Java游戏——飞机大战(免费开源)
敌机继承自FlyingObject,同时接口Enemy,定义了一个获取分数的抽象方法,来。敌机类型由随机数决定,小中大型飞机生成概率依次递减,同时击毁他们也有着不同的分数回报。

3.4奖励类 Bee

Java游戏——飞机大战(免费开源)
奖励物品也是一种飞行物,继承自FlyingObject,同时也有个接口——interface,其中有着奖励类型:加生命值、双倍火力、加分数。
另外其运动轨迹应该是不确定的,通过step()方法来实现。

3.5让图片动起来

Java游戏——飞机大战(免费开源)
通过time.schedule方法每隔一个interval的时间便执行一次,从而达到刷新屏幕画面的效果

3.6数据库定义

Java游戏——飞机大战(免费开源)

4系统实现

4.1 系统功能介绍

4.1.1 登录界面

Java游戏——飞机大战(免费开源)
LoginFrame为登录页面,在这个页面上用户可以进行登录注册操作,同时还有彩蛋,也就是两个图标,点击即有对话框弹出

4.1.2 开始、结束、游戏界面

Java游戏——飞机大战(免费开源)
Java游戏——飞机大战(免费开源)
Java游戏——飞机大战(免费开源)
设置每隔15s难度提升,会从数据库中读取最高分数并显示,另外当游戏结束时会将此次游戏的用户名、分数、时间存进数据库中。

4.2 模块介绍

LoginFrame为登录界面,ShootGame为游戏主体,Airplane为敌方小飞机,Hero为我方小飞机,Bee为奖励物品,Bullet为子弹,Award以及enemy为接口,提供了抽象方法。

5总结

本次项目历时一个星期,最终完成了。
在使用时请注意①首次运行时数据库部分要么注释掉换成自己的②代码部分有我个人标签,如要使用请自行删去③Java版本高于8的会没有bgm④有问题尽量自己解决⑤如果可以请给个赞或者star⑥运行可以从shootgame也可以从Loginframe进行

GitHub地址 https://github.com/zyhsna/Plane-War/tree/master