#一. 团队介绍

成员姓名

任务分配

文**(组长)

GUI、数据持久化

李**

背景音乐、博客撰写

#二. 参考代码

#三. 项目git地址

#四. 项目git提交记录截图,老师将重点考核

#五. 前期调查

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

#七. 面向对象设计包图、类图

#八. 项目运行截图或屏幕录制

#九. 项目关键代码:模块名称-文字说明-关键代码 ##1. 主流程控制

主流程:通过判断是否是运行状态来判断是否执行飞行物入场、飞行物运动、射击、删除越界飞行物及子弹和检查游戏结束

timer = new Timer(); // 主流程控制

timer.schedule(new TimerTask() {

@Override

public void run() {

if (state == RUNNING) { // 运行状态

enterAction(); // 飞行物入场

stepAction(); // 走一步

shootAction(); // 英雄机射击

enemyShootAction();// 敌机射击

bangAction(); // 子弹打飞行物

outOfBoundsAction(); // 删除越界飞行物及子弹

checkGameOverAction(); // 检查游戏结束

}

repaint(); // 重绘,调用paint()方法

}

}, intervel, intervel);

##2. 英雄机发射子弹

英雄机发射子弹的方法,当双倍火力开启时在英雄机两侧发射子弹,双倍火力未开启时则在机头发射子弹

/** 发射子弹 */

public Bullet[] shoot() {

int xStep = width / 4;

int yStep = 20; // 步

if (doubleFire > 0) { // 双倍火力

Bullet[] bullets = new Bullet[2];

bullets[0] = new Bullet(x + xStep, y - yStep); // y-yStep(子弹距飞机的位置)

bullets[1] = new Bullet(x + 3 * xStep, y - yStep);

return bullets;

} else { // 单倍火力

Bullet[] bullets = new Bullet[1];

bullets[0] = new Bullet(x + 2 * xStep, y - yStep);

return bullets;

}

}

##3. 英雄机射击、敌机/boss射击

分成两类射击:"英雄机射击"和"敌机/Boss射击",都是用时间来控制子弹的发射

"英雄机射击"通过定义子弹数组,英雄机只有一个,"敌机/Boss射击"通过定义子弹数组,敌机和boss的数量来确定数组大小

/** 射击 */

public void shootAction() {

shootIndex++;// 10毫秒执行一次

if (shootIndex % 30 == 0) { // 300毫秒发一颗

Bullet[] bs = hero.shoot(); // 英雄打出子弹

bullets = Arrays.copyOf(bullets, bullets.length + bs.length); // 扩容

System.arraycopy(bs, 0, bullets, bullets.length - bs.length, bs.length); // 追加数组

}

}

/** 敌机、boss射击 */

public void enemyShootAction() {

eShootIndex++;

Bullet[] bs = null;

if (eShootIndex % 60 == 0) { // 600毫秒发一颗

for (int i = 0; i < flyings.length; i++) {

bs = flyings[i].shoot();

if (bs != null) {

enemyBullets = Arrays.copyOf(enemyBullets, enemyBullets.length + bs.length); // 扩容

System.arraycopy(bs, 0, enemyBullets, enemyBullets.length - bs.length, bs.length); // 追加数组

}

}

}

}

##4. 碰撞检测

通过遍历所有子弹并使用碰撞检查方法,来分别处理子弹与敌机、蜜蜂和boss的碰撞 和 子弹与英雄机的碰撞

// * 敌机子弹与我方英雄机碰撞检测 */

public void bangAction() {

for (int i = 0; i < bullets.length; i++) { // 遍历所有子弹

Bullet b = bullets[i];

bang(b); // 子弹和飞行物之间的碰撞检查

}

int index = 0; // 索引重置为0

Bullet[] bulletLives = new Bullet[enemyBullets.length];// 存活子弹

for (int i = 0; i < enemyBullets.length; i++) {// 现有所有子弹

Bullet b = enemyBullets[i];// 取出所有子弹

if (enemybang(b)) {// 将取出的子弹一个个和英雄机碰撞检测

continue;

}

bulletLives[index++] = b;// 如果没有撞到,代表子弹存活,加到存活子弹数组中

}

enemyBullets = Arrays.copyOf(bulletLives, index); // 把存活子弹数组复制到真正要绘制的子弹数组中

}

#十. 项目总结(包括不足与展望) 不足:没有实现Boss在360°方向上均匀发射子弹的功能;没有实现Boss生命值较大不至于被一颗子弹打死。 展望:添加敌机被击败的音效、Boss出场音效。

java飞机英雄大战代码ppt_Java课程设计--飞机大战相关推荐

  1. java飞机大战流程图_JAVA课程设计-飞机大战

    JAVA课程设计-飞机大战 1.团队名称.团队成员介绍 1.1 团队名称:做个飞机哦 1.2团队成员介绍: 余俊良(组长):编写博客.游戏主界面设计与实现.英雄机与子弹类的实现.场景设计 林祥涛:游戏 ...

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

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

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

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

  4. HTML5期末大作业:橙色精美零食网站设计——橙色精美零食(3页) web前端课程设计_web前端课程设计代码,web课程设计-HTML网页制作代码

    HTML5期末大作业:橙色精美零食网站设计--橙色精美零食(3页) web前端课程设计_web前端课程设计代码,web课程设计-HTML网页制作代码 常见网页设计作业题材有 个人. 美食. 公司. 学 ...

  5. HTML5期末大作业:商城网站设计——蘑菇街商城(1页) HTML+CSS+JavaScript web前端课程设计_web前端课程设计代码,web课程设计-HTML网页制作代码

    HTML5期末大作业:商城网站设计--蘑菇街商城(1页) HTML+CSS+JavaScript web前端课程设计_web前端课程设计代码,web课程设计-HTML网页制作代码 常见网页设计作业题材 ...

  6. HTML+CSS大作业——电影动漫言叶之庭(4页) web前端课程设计_web前端课程设计代码,web课程设计-HTML网页制作代码

    HTML5期末大作业:电影网站设计--电影动漫言叶之庭(4页) web前端课程设计_web前端课程设计代码,web课程设计-HTML网页制作代码 常见网页设计作业题材有 个人. 美食. 公司. 学校. ...

  7. 飞机订票系统c语言大作业,c语言课程设计---飞机订票系统

    <c语言课程设计---飞机订票系统>由会员分享,可在线阅读,更多相关<c语言课程设计---飞机订票系统(46页珍藏版)>请在皮匠网上搜索. 1.C 语言程序设计课程设计报告设计 ...

  8. 飞机订票系统程序设计c语言,C语言课程设计——飞机订票系统源代码

    <C语言课程设计--飞机订票系统源代码>由会员分享,可在线阅读,更多相关<C语言课程设计--飞机订票系统源代码(9页珍藏版)>请在人人文库网上搜索. 1.include/标准输 ...

  9. Java课程设计——坦克大战

    坦克大战--坦克类 一. 团队课程设计博客链接 https://www.cnblogs.com/chenhuilin/p/10275664.html 二.个人负责模块和任务说明 模块:坦克类(玩家坦克 ...

最新文章

  1. Nginx 入门级配置
  2. 平衡二叉树AVL插入
  3. 【洛谷P4706】取石子
  4. 笔记本电脑报价单_抚顺x射线扫描仪设备,x-ray设备厂家报价单-老友网
  5. VSCode 上竟然也能约会,谈对象了???
  6. visio如何粘附或取消粘附连接线
  7. ORACLE 自增序列
  8. ECNU 梵高先生 3529 JAVA
  9. Kubernetes 认证
  10. ​资源分享知识付费下载网站源码​
  11. (R语言)R的统计模型
  12. ARM 搭建开源NAS平台
  13. 【iOS】—— 调用手机相机和相册
  14. STM32MP157C-DK2->Develop on Arm® Cortex®-A7之 C语言开发uart例程
  15. 公开我的信息过滤器!
  16. visual studio 2022安装vsix插件
  17. steam人机身份验证一直重复_Steam官方公布5月最热新游排行榜 竟遭免费游戏霸榜?...
  18. 电脑和电话能通话?简单
  19. 数电实验九:计数器的设计
  20. 如何成为世界上最好的程序员

热门文章

  1. 趣谈 DHCP 协议,有点意思。
  2. EOJ 3452 唐纳德先生和假骰子
  3. 股票风险 股票交易上的投机行为往往十分危险。假设某股票行为十分怪异,每天不是涨停(上涨10%)就是跌停(下跌10%)。
  4. Linux修复U盘只读问题
  5. ALSA Configure
  6. openLayers + Vue实现测量(长度、面积)
  7. 信息学竞赛复赛备考策略
  8. 合并报表软件选哪个?这篇文章两分钟告诉你!
  9. Python实现照片里添加文字
  10. 杂事缠身总分神,不妨试试番茄钟