JAVA课程设计-飞机大战

1.团队名称、团队成员介绍

1.1 团队名称:做个飞机哦

1.2团队成员介绍:

余俊良(组长):编写博客、游戏主界面设计与实现、英雄机与子弹类的实现、场景设计

林祥涛:游戏音效设计、玩家类编码与设计、小Boss类设计、ppt设计

高凯:画uml类图、积分榜设计、游戏道具定义实现、游戏状态设计

2.项目git地址

3.项目git提交记录截图

4.前期调查及游戏介绍

玩家通过控制飞机发射子弹击中不同的敌机获取积分,击中快速移动的浮标获得奖励(获得双倍子弹奖励、生命值增加)。游戏过程伴随着背景音乐,而且击中敌机或生命耗尽后会产生相应音效。与敌机相撞则扣除生命值1点,直到生命值为0,游戏结束,玩法简单有趣,锻炼反应能力。

5.项目功能架构图、主要功能流程图

6.面向对象设计包图、类图

包图

类图

7.项目运行截图

主界面显示

英雄机

普通敌机

精英机

小boss

切换飞机

双倍子弹模式

排行榜

奖励

游戏结束

8.项目关键代码

8.1鼠标事件

使用鼠标事件监听MouseAdapter对鼠标进行监听,当鼠标移动时获取鼠标的坐标,点击时开启游戏,鼠标移出窗体后游戏暂停,移入则继续。

MouseAdapter m = new MouseAdapter() {

// 鼠标移动事件

public void mouseMoved(MouseEvent e) {// 鼠标坐标获取

if (Running == state) {

hero.moveTo(e.getX(), e.getY());

}

}

// 鼠标点击事件

public void mouseClicked(MouseEvent e) {

if (Start == state) {// 点击开始游戏

state = Running;

} else if (Over == state) {// 游戏结束后点击重新开始

state = Start;

score = 0;// 积分,飞行物重置

hero = new Heroplane();

flyobj = new ArrayList();

bullets = new ArrayList();

}

}

// 鼠标移出事件

public void mouseExited(MouseEvent e) {

if (Running == state) {// 移出窗体,游戏暂停

state = Pause;

}

}

// 鼠标移入事件

public void mouseEntered(MouseEvent e) {// 移回窗体,游戏继续

if (Pause == state) {

state = Running;

}

}

};

8.2双缓冲技术消除闪屏

闪屏的出现是因为在while循环中执行线程时每循环一次便会重绘一次,而update()方法即会先清理掉当前的画面再重新绘制新的画面。可以在内存中重新开辟新空间,作为后台图像,本应该在界面上进行清理与重绘现在内存中先实现,生成新画面,最后显示到屏幕上。

private Image offScreenImage = null;// 利用双缓冲技术消除屏幕闪烁

public void update(Graphics g) {

if (offScreenImage == null) {

offScreenImage = this.createImage(WIDTH, HEIGHT);

}

Graphics gOff = offScreenImage.getGraphics();

paint(gOff);

g.drawImage(offScreenImage, 0, 0, null);

}

8.3飞行物显示

通过根据状态不断重绘飞行物来达到动画效果

Timer timer = new Timer();

int timeGap = 10;// 设定时间隔

timer.schedule(new TimerTask() {

public void run() {

if (state == Running) {

heroBulletEnter();// 英雄子弹的入场

enemyEnter();// 敌机的入场

enemyStep();// 敌机的移动

outBoundDel();// 删除越界(底)的敌机和子弹

enemyCrash();// 英雄机子弹与敌人相撞(子弹和敌机退场)

checkGame();// 检查游戏是否结束(敌机和英雄机相撞)

}

repaint();// 重画

}

}, timeGap, timeGap);// timeGap为每一次到下一次的触发间隔

9.项目代码扫描结果及改正

9.1第一次扫描结果

9.2扫描修正

在所有的覆写方法前增加@Override注释

常量名应当全部大写,单词用下划线隔开

switch块中,每个case都应通过break/default来终止

方法内部单行注释,在被注释语句上方另一行使用//注释,多行注释使用/**/注释

9.3全部修正后结果

10.项目总结

10.1不足

原先计划能够在完成单人模式的基础上增加联网模式,但是在基本完成单人模式后剩余的时间的确不够去实现联网。设计的敌机类型也不够多,道具类型也可以再增加。

10.2展望

在课设完成后利用课余时间增加网络模式,并在网络中进行线上合作与排行

java飞机大战流程图_JAVA课程设计-飞机大战相关推荐

  1. java飞机大战流程图_JAVA课程设计——飞机大战(团队)

    1.团队名称.团队成员介绍 黄力强(组长) 带带带带...带佬 陈汉煜(组员) 划水.gif 2.Gitee部分 3.项目功能架构图与主要功能流程图 游戏流程图: 面向对象设计 包图: uml(关键类 ...

  2. java飞机英雄大战代码ppt_Java课程设计--飞机大战

    #一. 团队介绍 成员姓名 任务分配 文**(组长) GUI.数据持久化 李** 背景音乐.博客撰写 #二. 参考代码 #三. 项目git地址 #四. 项目git提交记录截图,老师将重点考核 #五. ...

  3. java坦克大战互相碰撞_Java课程设计——坦克大战

    坦克大战--坦克类 一. 团队课程设计博客链接 二.个人负责模块和任务说明 模块:坦克类(玩家坦克类+电脑坦克类),代码整合 三.代码的提交记录截图 四.负责模块和任务详细说明 玩家坦克继承Visib ...

  4. java坦克大战总体功能设计_java课程设计——坦克大战

    ##一.团队课程设计博客链接: ##二.个人负责模块或任务说明: ###模块:GUI设计(游戏面板,登录面板,主窗体,显示关卡面板) ##三.自己的代码提交记录截图 ##四.自己负责模块或任务详细说明 ...

  5. java课设 五子棋_Java课程设计 ————五子棋 (个人博客)

    JAVA课程设计 五子棋(博客个人版) •团队课程设计博客链接 •个人负责模块或任务说明 1.主框架类:设置棋盘窗体,颜色等 2.isWin方法:判断胜负 •自己的代码提交记录截图 •自己负责模块或任 ...

  6. java编程电话号码查询_java课程设计电话号码查询系统(15页)-原创力文档

    山东建筑大学 Java 课程设计报告 设计题目 电话号码查询系统 学生姓名黄瑜 学号 2010121187 专业班级信计101 指导教师 王文 1 1 1.设计目的 1.通过JAVA 课程设计,使大家 ...

  7. java 公交管理系统 代码_JAVA课程设计报告公交管理系统.pdf

    Java期末课程设计 -- Busmanagerment 课程名称:算法设计与分析 任课老师:吴倩 学生姓名:谢秀华 学生学号:1037005 所在院系:信息工程学院 班级: 10计算机1班 一.前言 ...

  8. java多功能计算器_Java课程设计多功能计算器 PDF 下载

    1.摘要: 为复习巩固Java语言的基础知识,进一步加深对java语言的理解和掌控.同过本课程设计使自身能够全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解.掌握和综合运用所学的知识 ...

  9. java驾校管理系统代码_JAVA课程设计驾校管理系统

    [实例简介] 该项目是用JAVA-Swing编写.需要建立一个mysql表.因为软件问题无法导出,请读者自行创建.表的列数据在下载文件的截图中,因为程序有导出数据库到Excel文件和界面美化(共27个 ...

最新文章

  1. LaText中插入带上下限的求和符号
  2. nodejs mysql 创建连接池
  3. 【317】python 指定浏览器打开网页 / 文件
  4. python 写txt 换行_python 批配换行Numpy数组的保存与读取方法
  5. 数据可视化【三】基本概念
  6. 男生给女生最牛B的告白
  7. tomcat7的数据库连接池tomcatjdbc的25个优势
  8. java 线程亲缘性_第7章 线程调度、优先级和亲缘性(1)
  9. FPGA智能传感系统(一)Verilog基础入门
  10. 获取棋盘格与标准模板在扫描仪上不同位置图片
  11. C++代码审阅--ice104协议从站(1)
  12. 计算机辅助绘图工具,CAD精确辅助绘图工具
  13. Android 11版本号仍有甜点名称 只是不再公开:红丝绒蛋糕
  14. PHP计算一年有多少周,每周开始日期和结束日期
  15. java isreachable_Java网络编程从入门到精通(12):使用isReachable方法探测主机是否可以连通...
  16. sqlmap工具使用手册
  17. 【matlab 官方刷题网站cody】题目解答积累
  18. 基于STM32人群定位,调速智能风扇设计
  19. 【图像去噪】基于matlab多种自适应均值滤波图像去噪【含Matlab 1843期】
  20. 根据视频学习DQN(Deep Q-learning)

热门文章

  1. 整人之bat重启文件
  2. dom加载完再执行 vue_vue中等页面dom加载完毕后执行某方法?
  3. 在pycharm里做echarts_用 ECharts 做出漂亮的数据统计图
  4. 【LeetCode】0395.至少有K个重复字符的最长子串
  5. 带你学python基础:元祖tuple和字典dictionary
  6. UI组件之AdapterView及其子类关系,Adapter接口及其实现类关系
  7. eclipse 打开时候,弹出来 JVM terminated Exit code=2
  8. elasticsearch aggregation的入门案例
  9. c语言位运算 求1个整数的二进制数有多少个1
  10. php mysql db封装类_封装自己的DB类(PHP)