ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:82.90KB ,
资源ID:9819889      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9819889.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MAZE系统详细设计书.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MAZE系统详细设计书.docx

1、MAZE系统详细设计书MAZE系统游戏详细设计说明书学院名称: 计算机学院专业名称: 信 管组 员: 信管学生详细设计说明书1引言1.1编写目的详细设计说明书对MAZE游戏的总体设计和各个模块的功能、性能、输入输出、算法、接口、程序逻辑、存储分配及其它给出了详细的设计方案,为软件开发制定详细的计划,同时也提交系统分析员,由其提出意见。这是程序员开发及未来测试烦人重要文档资料。1.2背景a. 开发软件名称:MAZE系统b. 项目开发小组成员:信管学生c. 用户:所有喜欢玩这个游戏的玩家d. 项目开发环境:Windows XP + Eclipse + SDK。1.3定义MAZE 项目 详细设计方案

2、 。1.4参考资料(1) 软件工程案列开发与实践,刘竹林等,清华大学出版社(2) Java课程设计案例精编,张广彬、孟红蕊,张永宝,清华大学出版社(3) 马士兵视频全集 ,马士兵 ,北京尚学堂2程序系统的结构本次所设计MAZE游戏的程序主结构如图2-1所示。3程序(标识符)设计说明从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。3.1程序描述主要功能:MAZE系统开发的是警匪对战游戏,玩家可以自由添加

3、警察,小偷角色在任何游戏中任何位置,然后警察和小偷会自动在游戏中搜索对方并根据自身情况消灭敌人,游戏过程中队友之间可以相互通信,也可以在游戏中加入迷宫场地,增加游戏的趣味。可扩展性:能够适应应用要求的变化和修改,具有灵活的可扩充性。3.2功能游戏界面主框架主要包括游戏图形区域界面、菜单栏,状态栏,时间墙。菜单栏中有菜单项:“游戏”,“绘图”,“添加人员”,“新功能”,“音乐”,“关于”,“帮助”等。游戏画布区主要应该包括游戏画布中警察,小偷,子弹,爆炸等图片出现的位置。按键说明: 键值作用UP向上运动DOWN向下运动LEFT向左运动RIGHT向右运动SPACEFireSHIFTsuperfir

4、eF2重生F3Speed=15F4Speed+=5F5Speed - =5S保存游戏进度O打开历史记录简单布局:图-1 简单布局3.3性能3.3.1精度1、在执行游戏页面首次加载的时候,不允许出现因为程序的原因导致增加加载失败;2、在执行Agent删除操作的时候,不允许因为程序的原因发生多删除Agent、删除失败的情况3.3.2时间特性要求把用户进入游戏界面的时间要求在3秒内,对鼠标点击添加人员,响应时间规定在2秒内。3.3.3灵活性A、操作方式程序在通常的应用环境下使用鼠标和键盘进行输入和输出操作,对于执行菜单项,通常使用鼠标的点击完成。B、运行环境WINDOWS XP操作系统。3.4方法3

5、.4.1 PTClient主文件类属性:类型名称说明intF_EIDTH框架高度intF_HEIGHT框架宽度booleantPaint游戏开始控制booleanmousePaint鼠标绘图控制booleanaddp加入Policebooleanaddt加入Thiefbooleanme亲自参战booleanaddMy加入自己booleanisSpuer隐身booleanaddBackMusic1加入背景音乐booleanaddThiefTen加入十个ThiefbooleanisWall是否画出墙壁booleanisWin判断游戏是否结束booleanstopContinue暂停/继续boole

6、anmyPolice绘制我的人物方法:类型方法名作用public static voidmain()主线程控制,建立主线程public voidPaint()绘图方法初始化游戏界面public voidUpdate()更新界面Public voidlauchFrame()设计外观布局,添加菜单项监听事件Public void actionPerformed()行为事件实现类:类型类名说明Public classPaintThread开辟绘图线程Implements Runnable()外部类MonitorExtends MouseAdapter鼠标监听外部类keyMonitorExtendsk

7、eyAdapter键盘监听 PTClient 算法核心:/启动主线程 public static void main(String args) final PTClient tc = new PTClient(); tc.lauchFrame(); /绘图线程 public class PaintThread implements Runnable public void run() while(tPaint) if(0 = second % 10)time.timeUp(); repaint(); try Thread.sleep(100);/每0.1秒绘制一次画面 second + ; c

8、atch (InterruptedException e) e.printStackTrace(); 3.4.2 Police类属性: 类型名称说明Private static intP_W=30Police 宽度为 30Private static intP_H=30Police 高度为30int xPolice在游戏中的横坐标intyPolice 在游戏中的纵坐标intoldXPolice上个位置的坐标防止粘墙intoldYPolice上个位置的纵坐标Private intspeedX=15Police 在横坐标方向的速度Private intspeedy=15Police 在纵坐标方向的

9、速度Private booleanLive=true判断Police是否还活着Private Boolean bb=new BloodBar()Police的体力图形化表示,BloodBar()是个内部类Private Boolean good=true用于区分敌友Private intLife=200体力值Private intsafeL=30安全距离Private booleanisRand=true判断是否要随机移动Private intfireNum=7设置开火频率Private Directiondir=Direction.STOP初始化Police方向为静止Private Dire

10、ctionptdir=Direction.U初始化Police枪口方向,为向上Private booleanbL=falsebU=falsebR=falsebD=false控制Police方向的改变PTClienttc引用PTClientPrivate booleanisMe看是不是自己Private static Toolkittk获得文件路径Private static ImagepersonImage=null引入Police图片方法: 类型名称说明publicPolicePolice类的构造函数参数Police的坐标x,y方向dir,好坏 good应用 tc,区分自己的isMePubl

11、ic voiddraw(Graphics g)Police的绘制函数用于绘制Police在各个方向的图像,g是传递而来的画笔voidmove()控制Police的八个方向的移动Public RectanglegetRect()获得Police所占的区域,用于检测是否发生碰撞Public voidcollideWall(Wall w)处理Police的撞墙Public void fire()控制Police的开火Public voidSuperfire()附加功能,控制自己的人物一次朝八个方向开火Public intgetLife()获取Police现有生命值Public intsetLife(

12、int life)设定police的生命值为lifePublic booleanisLive()判断Police是否活着Public booleanisGood()用于区分敌友Public intgetX()getY()获取Police的坐标Public booleanSearch()搜索方法,当遇到敌人是判断是攻击,求救还是逃跑Public voidgetSpeedX()getSpeedY()获得Police的当前速度Public voidsetSpeedX(int speedX)setSpeedY(int speedy)当中弹是改变Police的速度voidlocateDirection(

13、)根据bL,bU,bR,bD改变Police运动方向Public voidkeyReleased()重写键盘释放方法内部类:Public classBloodBar设置Police头顶的血液条Police类的核心算法:/移动算法void move()/在自由移动时撞到墙返回上一步,重选方向 this.oldX = x; this.oldY = y; switch(dir)/根据运动方向改变位置 case L : x -= speedX; break; case LU : x -= speedX; y -= speedY; case U : y -= speedY; break; case RU

14、 : x += speedX; y -= speedY; case R : x += speedX; break; case RD : x += speedX; y += speedY; case D : y += speedY; break; case LD : x -= speedX; y += speedY; case STOP : break; if(true = isMe) if(dir != Direction.STOP) ptdir = dir; /判断是否到达map边界 if(x 0) x = 0; if(y PTClient.F_WIDTH - 110) x = PTClie

15、nt.F_WIDTH - Police.P_W - 110; if(y + Police.P_H PTClient.F_HEIGHT) y = PTClient.F_HEIGHT - Police.P_H; if(false = isMe) if(isRand) Direction dirs = Direction.values(); if(step = 0) int rn = r.nextInt(dirs.length); dir = dirsrn; step = r.nextInt(12) + 3; step -; if(!isRand)/控制开火 if(fireNum = 0) fire

16、(); fireNum = 7; fireNum -; isRand = true; search(); /搜索search()算法public boolean search() int x1 = x,y1 = y; int x2,y2; int m = 1000000000; Rectangle r = new Rectangle(x-200,y-200,400,400); for(int i = 0;i this.distance(x, y, x2, y2) x1 = x2; y1 = y2; /if else continue; int rLife = pt.getLife(); int

17、 t1 = x - x1; int t2 = y - y1; if(t1 0)t1 = -t1; if(t2 = rLife)/ 若强 则进攻 if(y y1 & t2 safeL) dir = Direction.U; ptdir = Direction.U; else if(y safeL) dir = Direction.D; ptdir = Direction.D; else if(y y1) ptdir = Direction.U; dir = Direction.STOP; else if(y y1 ) dir = Direction.D; ptdir = Direction.U;

18、 else if(y = rLife) if(x x1 & t1 safeL) dir = Direction.L; ptdir = Direction.L; else if(x safeL) dir = Direction.R; ptdir = Direction.R; else if(x x1) dir = Direction.STOP; ptdir = Direction.L; else if(x x1) dir = Direction.R; ptdir = Direction.L; else if(x = t2)/水平差距大 if(this.life = rLife)/攻击 if( x

19、 x1 ) dir = Direction.L; ptdir = Direction.L; else if( x x1) dir = Direction.R; ptdir = Direction.L; else if( x x1) dir = Direction.L; ptdir = Direction.R; if(t1 != 0 & t2!= 0 & t1= rLife)/攻击 if(y y1) dir = Direction.U; ptdir = Direction.U; else if(y y1) dir = Direction.D; ptdir = Direction.D; else

20、if(this.life y1) dir = Direction.D; ptdir = Direction.U; else if(y y1) dir = Direction.U; ptdir = Direction.D; /for() return true; 3.4.3 Bullet类属性: 类型名称说明Private intx,y记录子弹的坐标Private intinitX,initY记录产生子弹的位置用于控制子弹的有效攻击距离Private intBlen=300初始化子弹的有效攻击距离为300Private static intB_W=10子弹宽度Private static int

21、B_H=10子弹高度Private int speedX =25speedy=25初始化子弹横纵坐标方向的速度为25Private booleangood判断子弹的好坏用于区分是敌方子弹还是己方子弹Private Directiondir设置子弹方向PTClienttcPTClient 引用Private static ImagebulletImage存放子弹各个方向的图片方法: 类型名称说明publicBullet()子弹类的构造函数参数:子弹的横纵坐标x,y,子弹的方向dir子弹的好坏good,以及PTClient引用tcPublic voiddraw(Graphics g)子弹的绘图函数

22、绘制子弹各个方向各个时刻的图像voidmove()控制子弹的八个方向的移动Public Boolean isGood()用于区分敌我子弹己方子弹不伤害己方人员Public booleanisLive()判断子弹是否还活着若死亡则清理出屏幕Public voidcollideWall(Wall w)处理子弹撞墙Public voidcollidePolice(Police pp)处理子弹撞击警察Public voidcollideThief(Robber pt)处理子弹撞击ThiefPublic intgetSpeedX()getSpeedY()获得子弹现有的速度Public intsetSpe

23、edX()setSpeedY()重设子弹的速度Bullet类的核心算法:/子弹撞击Police的处理 public void collidePolice(Police pp) if( this.live & pp.isGood() != this.good & this.getRect().intersects(pp.getRect() & pp.isLive() ) this.live = false; pp.setLife(pp.getLife() - 50); pp.setSpeedX(pp.getSpeedX() - 3); pp.setSpeedY(pp.getSpeedY() - 3); if(pp.getLife() = 0) pp.setLive(false); if(pp.getLife() = 100) new Sound(Sound.need_help); Explode e = new Explode(x,y,tc); tc.explodes.add(e); tc.bullets.remove(this); 3.4.4 Wall类 属性: 类型名

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2