2、需求&原型改进:

1.问题:游戏中坦克的移动和攻击怎么控制的?

改进:

在游戏中,我控制我方坦克,按下方向键坦克便向按下的方向移动,按下Z键,我方坦克发射炮弹。敌方坦克面向随机的方向移动,并向面向的方向随机发射炮弹,炮弹按发射时的方向沿直线射出。当我方坦克的炮弹击中对方坦克的时候,对方坦克爆炸,之后被击中的坦克消失,游戏继续。当对方坦克的炮弹击中我方坦克的时候,我方坦克血量减1,当我方坦克空血的时候,我方坦克爆炸,此时游戏结束。

分析:自上而下

A)找到这个游戏中的对象:窗体、我的坦克、敌方坦克、红色炮弹、蓝色炮弹、爆炸

B)找到对象之间的关系:在窗体上有我方坦克和敌方坦克,我方坦克发射红色子弹,敌方坦克发射蓝色子弹,我方坦克遇到蓝色子弹后血量减1,血量为0时爆炸,敌方坦克遇到红色子弹后爆炸。我方坦克和对方坦克同属坦克类,红色炮弹和蓝色炮弹同属炮弹类。

2.问题:坦克和子弹的属性有没有更加具体化?

改进:

坦克:

我方坦克:长度、宽度、速度、位置、面向的方向、血量

移动、发炮、减血

敌方坦克:长度、宽度、速度、位置、面向的方向

移动、发炮

炮弹:

红色炮弹:大小、颜色、速度、位置、方向

移动、碰撞

蓝色炮弹:大小、颜色、速度、位置、方向

移动、碰撞

爆炸:长度、宽度、位置

爆炸

3、系统设计:
整个游戏系统利用面向对象语言Java编写,程序可大致分为以下几个大模块:

游戏程序中会涉及到6个类,,包括Tank类、Missile类、TankLocal类、BloodTool类等。

1. Tank类

属性:坦克类是最主要的类,包含了坦克的一些基本的属性,如初始坐标、移动速度、存活情况、正义或反派,也包括了一些特殊用途的变量,如frontX,frontY用来判断坦克是否撞墙的,step则是用于产生敌人坦克移动的随机步数。

方法:

1 两个参数不同的构造方法、自身的draw()方法,绘制坦克

2 locate()方法用于确定判断坦克移动的方向,主要判断是否为斜向移动

3 move()方法则是控制坦克坐标移动

4 fire()方法用来构建子弹对象并加入到子弹集合中

5 另外还有事件处理方法KeyPressed()和KeyReleaes()

6 impactOnWall()用来判断坦克是否撞墙(省略impactOnTank()原理相同

7 superFire()则是用来实现八个方向的子弹发射的

8 stayMove()用于处理坦克撞墙的坐标变换

9 eat()方法用来判断主坦克是否与补血道具碰撞及处理

内部类:坦克类中还拥有一个内部类BloodBar,用于绘制坦克的血条

2. Missile类

属性:子弹的初始坐标x、y,子弹的存活情况、正义或反派以及方向,还定义着主面板TankLocal的引用tl。

方法:

1 两个不同参数构造方法,子弹自身的draw()方法,绘制子弹

2 move()控制子弹的移动

3 hitTank()判断子弹是否击中坦克及处理,并遵循相同justice值的子弹与坦克不能发生碰撞

4 getRect()用于返回子弹的坐标、宽度和高度,以便进行碰撞检测

5 hitWall()用于判断子弹是否撞墙及处理

3. TankLocal类

属性:主面板中属性较少,主要是一些对象创建的工作,也有一些全局变量,如有grade,记录玩家的分数。

方法:

1 paint()方法是最重要的方法之一,所有的可视化对象都必须在此方法中实例化,并绘制。包括坦克,子弹,墙壁,以及信息栏的文字信息,都需要在此方法中随主面板实时刷新,也因此能看到对象的移动。

2 update()方法是双缓冲技术的实现,主要画出一张虚拟图片,将要加载的内容绘制好,再拷贝到当前画板中。

3 startFrame()负责创建主面板,并初始化一些面板数据,如标题、背景色、可见性、窗口尺寸可更改性,还负责启动主线程。

4 main()启动程序

内部类:

1 paintThread 线程内部类,用于重绘面板

2 KeyMoniter 监听内部类,用于监听主坦克的按键事件

3    BloodTool类

属性:道具的初始坐标x、y,宽高 w、h,记录移动的步数step,存活情况isLive,主面板引用tl,移动的轨迹数组postion[][]

方法:

1 构造方法BloodTool(),道具自身的draw()方法,绘制道具

2 move()控制道具的不断移动

3 getRect()得到当前道具的坐标及宽度和高度,用于坦克对其的碰撞检测,从而判断坦克是否“吃”到道具。

4、Alpha任务分配计划

Tank类 黄宇航,
Missile类 黄国航
TankLocal类 赖少勇
BloodTool类 卢泰佑
paintThread类 李密
KeyMoniter类 陈舒标

5、测试计划

1、开发时测试:后台主要是对游戏操作、功能代码能否正常运行测试,前端主要是界面是否正常的测试

2、Alpha测试:首次实现前后台对接的各种测试,保证功能、游戏能正常运行

3、Beta测试:面对外部用户的意见反馈进行开发测试

4、最终测试:完整游戏最终测试

团队作业(HCL队)第三周—需求改进和系统分析的更多相关文章

  1. 团队作业5——《Spring_Four》项目需求改进与系统设计

    团队项目需求分析改进: 任务1: a.分析<基于Jsoup的大学生考试信息展示系统项目需求规格说明书>初稿的不足,特别是文档需求描述建模不完整的内容. 通过软件工程更深入的学习发现我们的需 ...

  2. 团队作业第3周——需求改进&系统设计

    目录 团队作业第3周--需求改进&系统设计 1.需求&原型改进 2.系统设计 3.Alpha任务分配计划 4.测试计划 1 测试术语 4.2 有关项目人员组成 2 任务概述 3.测试策 ...

  3. bug终结者 团队作业第四、五周

    bug终结者 团队作业第四.五周 博客编辑者:20162322朱娅霖 本周学习任务: 团队协作完成<需求规格说明书> 工作流程 第四周 团队成员各自完成蓝墨云班课中<需求规格说明书& ...

  4. bug终结者 团队作业第六、七周

    bug终结者 团队作业第六.七周 作业要求:团队作业第六.七周 博客编辑:20162322 朱娅霖 一.修改<需求规格说明书> <需求规格说明书>2.0版(即初稿) <需 ...

  5. 集美大学网络1413第七次作业成绩(团队三) --需求改进&系统设计

    题目 团队作业3--需求改进&系统设计 团队作业3成绩  团队/分值 TD BZ GJ CJ SI WBS GS JG DB SS SJ CS DC 总分  1 0.25 0.75 1 0.5 ...

  6. C++轮子队-第三周(需求改进&原型设计)

    需求改进&原型设计 一.需求完善 (一)系统功能(补充) 图形界面(图片如下图所示:) 根据需求与组内讨论结果,现归纳图形界面方面需要的设计与相应功能: 数据-图形界面中间类: 数字方块类 N ...

  7. 团队作业4:第三篇Scrum冲刺博客(歪瑞古德小队)

    目录 一.Daily Scrum Meeting 1.1 会议照片 1.2 项目进展 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3.2 Code Review 记录 3.3 issue ...

  8. 团队项目(HCL队)第二周

    一.项目介绍 1.内容 我们队选择的题目是经典90坦克大战的java实现,后续会加入ai,以实现更丰富的体验. 2.预期使用数量 原版的经典90坦克大战拥有众多粉丝,我们在其上进行拓展,目前预计用户量 ...

  9. 团队作业第3周——需求改进&系统设计(crtl冲锋队)

    2.需求&原型改进: 1.问题:游戏中我方飞机和敌方飞机是怎么控制的? 改进: 在游戏中,我控制我方飞机,按下方向键飞机便向按下的方向移动,按下Z键,我方飞机发射子弹. 敌方飞机面向随机的方向 ...

随机推荐

  1. 吴裕雄 实战PYTHON编程(7)

    import os from win32com import client word = client.gencache.EnsureDispatch('Word.Application')word. ...

  2. GBDT 将子树结果当成lr输出

    http://scikit-learn.org/stable/auto_examples/ensemble/plot_feature_transformation.html#example-ensem ...

  3. SpringCloud组件和概念介绍1

    一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及 ...

  4. Nexus 使用配置

    Nexus使用的一些基本设置 1.更改中央仓库地址为私服地址 既然我们配置了私服,那么相应的,我们的项目就应该使用Nexus的地址(Public Repository)来下载jar包 1.1.基于PO ...

  5. sharepoint 调查问卷权限设置

    参考网址:http://www.cnblogs.com/mybi/archive/2011/04/18/2019935.html 按文章设置后发现访问时提示没有权限. 于是把新权限(问卷回复)的权限组 ...

  6. hibernate联合主键

    @Entity @Table(name = "TABLE_NAME") @IdClass(PK.class) public class TableName implements S ...

  7. 图解Java常用数据结构(一)【转载】

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...

  8. 【英宝通Unity4.0公开课学习 】(三)脚本使用

    清明出去放松了一天. 看了下大姑爷,然后去大姑家吃了个午饭,下午三点左右出去找煤球耍,在他们学校和良乡镇逛了一下.当时感觉离北京好远好远啊... 其实不得不说现在的交通确实很方便,到哪都要不了几天,如 ...

  9. 使用CSS实现透明边框的效果——兼容当前各种主流浏览器[xyytIT]

    这个效果可是通过代码实现的哦,在不同浏览器下都可以正常显示 对于html中使用CSS实现透明边框的效果,主要有以下四种属性设置方法,但由于 这些属性兼容性并不是很好,单一使用会造成不同浏览器显示效果不 ...

  10. iOS 处理cell选中时背景颜色消息问题

    在cell上添加子控件,在我们点击或者长按的时候,如果子控件有背景颜色,这时候背景颜色就会没有了,这个时候产品经理过来一顿怼,