- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《坦克大战》系统分析设计
《坦克大战》
系统分析设计文档
目录
一、系统功能模块 1
1. 战斗模块: 1
1.1 移动模块 1
1.2 射击模块 2
1.3 生命值模块 3
1.4 碰撞检测模块 3
1.5 对象创建模块 4
1.6 积分模块 4
1.7 作弊模块 5
1.8 道具模块 5
2. 面板绘图模块 5
3. 事件处理模块 6
二、程序关键类说明 7
1. Tank类 7
2. Missile类 8
3. TankLocal类 9
4. BloodTool类 10
一、系统功能模块
整个游戏系统利用面向对象语言Java编写,程序可大致分为以下几个大模块:
更详细可将战斗模块做以下分解:
1. 战斗模块:
1.1 移动模块
模块描述:
使玩家与电脑坦克能够自由并且匀速流畅的进行移动,通过按下和松开键盘上的方向键来实现移动和停止移动。
设计方案:
我们对传统的坦克四向移动方式其进行了完善,将原本的四向移动完善为八向移动,即除了传统的上下左右移动之外,还增加了斜向移动,也就是左上、左下、右上、与右下。除了可以按住单个方向键进行四向移动之外,还可以同时按住两个互不相反方向键来进行斜向移动的实现,松开方向键之后坦克停止移动,同样,电脑控制的坦克也是八向的移动方式,这样就增加了更多的不确定因素,游戏的耐玩性和挑战性得到了提高。
关键技术介绍:
在tank类中定义一个枚举类表示方向,其中包括9个固定方向对象:八个方向+stop静止,方便直接调用这些固定对象;对主站坦克,即玩家的坦克设置布尔类型的方向标志位,再通过switch...case...语法对玩家按键情况进行检测,于是可以检测出玩家按下的两个键,最后通过调用位移方法达到移动的目的。
1.2 射击模块
模块描述:
使玩家与电脑控制的坦克能够流畅并且自由但是有限制的发射子弹,通过按下和松开键盘上的空格键来实现射击和停止射击,子弹弹道以直线匀速的形式飞出。
设计方案:
我们对传统的坦克四向射击方式进行了完善,将原本的四向完善为八向射击,即除了传统的可以上下左右射击之外,还增加了斜向射击,也就是说在八向移动的基础上,按下键盘上的空格键,玩家控制的坦克就可以朝着当前的朝向发出子弹,如果玩家按住空格键不放,坦克将只会发出一颗子弹,而不是不停的射击。
关键技术介绍:
在八个方向移动的基础上,通过监听玩家按下的按键,在绘制子弹前,获取当前坦克的移动方向标志位的值dir,就可以知道即将打出的子弹朝哪个方向飞行,并绘制它即可。飞出的子弹不改变方向直线匀速(大于坦克的移动速度)飞行,直到撞到障碍物或边界或击中坦克,子弹消亡。
1.3 生命值模块
模块描述:
让玩家和电脑控制的坦克都具有一定量的生命值,在受到攻击之后生命值减少,电脑控制的坦克生命值减少完之后就会被摧毁,玩家的坦克生命值减少完之后游戏结束,增加游戏的可玩性与玩家容错率。
设计方案:
将生命值用血条的方式呈现出来,即在玩家和电脑控制的坦克的图标上方显示代表当前生命值的血条,电脑控制的每辆坦克可以承受4次攻击,然后被摧毁,玩家控制的坦克可以承受6次攻击然后被摧毁,游戏结束。每次受到攻击之后血条就会有相应的减少来响应被攻击。
关键技术介绍:
利用到Java中的内部类,这样的好处是可以直接与tank对象融为一体,坦克移动血条就会跟着移动;在tank类里定义一个内部类,bloodbar血条,里面包括自身的draw方法,画出血条,血条长度通过获取坦克当前的血量进行绘制。这样就可以实现坦克的生命值的图形化。
1.4 碰撞检测模块
模块描述:
游戏中,坦克与坦克之间,坦克与墙之间,子弹与坦克之间,子弹与墙之间等都需要进行碰撞检测,撞墙不能前进,坦克之间也不能相互穿透,子弹也不能穿透墙壁。
设计方案:
通过获取被测对象的当前坐标,并对两个对象的坐标进行比较检验是否发生碰撞;坦克与坦克之间,通过从坦克集合里遍历取出坦克,判断是否存活,然后依次与被测对象进行碰撞检测,其他情况的碰撞如子弹与坦克可同理实现。
关键技术介绍:
利用Java中最简单的矩形碰撞检测,先引入public Rectangle getRect()方法,被测的两个对象直接调用getRect()方法得到自身所在的矩形表框,通过intersects()方法比较两个对象的所在矩形框是否相交来判断是否发生碰撞。
1.5 对象创建模块
模块描述:
游戏中所有可视化对象的创建过程与方法,有的简单的逐一创建,有点群体创建。
设计方案:
对主坦克、墙障碍进行单独创建,对敌人坦克、子弹、爆炸效果等对象进行群体创建,并合理地对它们进行添加、删除等操作。
关键技术介绍:
利用Java中的集合中ArrayLi
文档评论(0)