超级玛丽详细设计文档_第1页
超级玛丽详细设计文档_第2页
超级玛丽详细设计文档_第3页
超级玛丽详细设计文档_第4页
超级玛丽详细设计文档_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、超级玛丽JAVA小游戏详细设计目录1. 导言21.1编写目的21.2项目围21.3参考资料21.4缩写说明21.5术语定义22. 功能需求32.1界面设计技术32.2游戏功能划分323功能划分的架构图32. 4具体的功能模块42. 5功能描述42. 6程序的总体架构42.7程序的三层结构图43 面向对象设计53.1主要类图53.2各个模块的方法或类名类表示53.3地图绘制中的坐标说明64.程序的详细设计64. 1主要人物玛丽的实现64. 2核心类7页脚超级玛丽JAVA小游戏详细设计1 导言l.i编写目的该文档的目的是说明超级玛丽游戏的功能和设计方向、目标等描述游戏项 目的整体框架的实现。其主要

2、容包括:游戏项目的功能简介,接口设计,模块设 计,界面设计。本文档预期读者包括:项目管理人员,编程人员,数据库设计人 员,美工,测试人员。1.2项目围该文档定义了游戏的模块,结构单元,但未确定单元的实现方法,这部分容 将在具体的代码设计中实现。1.3参考资料java语言程序设计清华大学郎波编著1.4缩写说明UML:Unified Modeling Language(统模语言)的缩写,是一个标准的建模语 言。1.5术语定义MIDP 2. 0 定义:MIDP 2. 0 也叫 MIDP_NG,它的编号是 JSR 118。MIDP2. 0 与 1.0相比有很大提高,增加的特性包括:提供域安全模型,以允

3、许对应用程序进 行签名和论证;提供TCP、UDP网络接口;置0TA;更好的用户界面;基本的声 音 APIo页脚2.功能需求2. 1界面设计技术1)选取和谐Q版的图片,使画面色彩和谐自然,配合动听的音乐渲染游戏气氛2)采用对话框方式,多功能窗口运行,固定窗口大小便于程序编写,键盘操作 游戏角色。3)使用低级用户界面,响应低级用户事件,不使用MIDP2. OGameAPI4)地图数据采用char类型,对每一个地图块的大小为16X16像素,采用单层 地图,以提高游戏的运行速度5)居于多线程,实现进度条2. 2游戏功能划分游戏的基本功能应该包括菜单处理,程序逻辑处理,持久性处理和挂起恢复处理。关于菜单

4、的处理,包括可以选择的进入游戏、保存、帮助和音效开关等。程序的逻辑处理就是涵盖了程序中除菜单外几乎所有的功能。持久性处理就是资源的载入和游戏的进度保存。2. 3功能划分的架构图离开游戏进入游戏主菜单页脚2. 4具体的功能模块1)游戏控制模块2)查询记录模块3)关卡选择模块4)游戏设置模块2. 5功能描述玩家打开程序,在游戏菜单页面有四个选项。关卡选择:选择已玩过的关卡进行游戏;开始游戏:从游戏的第一关进行游戏,玩家通过按键控制主人公马里奥进行 不同的操作;查询记录:查询五个最高游戏分数,排名由上往下递减。游戏设置(包括音乐设置和按键设置):玩家可以设置游戏进行时的音乐开 或关以及修改相应的控制

5、键。2. 6程序的总体架构本程序采用3层程序架构,业务表现层,业务逻辑层和数据持久层。业务表现层。主要是游戏界面的绘制,通过指定的接口绘制,与游戏的逻辑 分离。业务逻辑层。主要是游戏的人物和敌人的动作,碰撞的判断,这个与表现层 无关,需要表示层调用定义好的接口与逻辑层的通信数据持久层。保存游戏中的数据,载入游戏中需要的资源,与程序逻辑层无 关,用XML文档存储数据2. 7程序的三层结构图页脚3面向对象设计3.1主要类页脚3. 2各个模块的方法或类名类表示主要类名,方法主窗休类MyFrame()主姜显示图片,文字Maio人翎类Mari&O定义mario的各神动作 并为之导人相应的要片, 判断罡丐

6、与障碍铁h敌入、 這豆接融,并巨做出相应 的判断敌人类Enemy()定义敌人移动的庫经PropOb struct! on()StaticValue导入全記轉要的图片在 从各令类中取出声咅奏Sound。兰按下空榕开始游戏时. 戸言类导人背景音乐背景娄BackGround将硏尋拘,敌入,圍片昙 入到窗住中P&X T13.3地图绘制中的坐标说明地图.(Eap xrnnap y)begin Y-rY ICUrent Width月p幕专页脚4程序的详细设计部分源代码如下:4.1主要人物玛丽的实现package org liky.mario;import java. awt imageBuFferedlm

7、age;public class Mario implements Runnable /坐标private int x;private int y;/定义一个场景对象来保存竺12当前所处的场景对象 private BackGround bg;加入线程private Thread t=null;移动速度private int xmove=0;private int ymove=0;状态private String status;显示的图片private BufferedImage showImage;生命数和分数private int life;private int score;当前移动中显示

8、的图片数private int moving=0;private int upTime=0;标记mat io是否死亡private boolean isDead=false;标记玩家是否完成了全部的游戏private boolean isClear=false;public Mario(int xt int y)this. x=x;this y二y;/初始化图片this show!mage=Stat icValue alIMarioImage. get(0); this score=0;页脚this. life=3;t=new Thread(this);this status二rightsta

9、nding1*;t. start (); public void leftMoveO /改变速度this xmove=-30;/改变状态/如果当前巳经是跳跃状态,应该保留原有状态, if (this, status indexOFC jump in gH) !=-l) this status二leftjumping*;elsetthis status二leftmoving*;public void rightMoveO this xmove=30;/如果当前已经是跳跃状态,应该保留原有状态, if (this, status indexOFC jumping) !=T) this status

10、=nrightjumping;else!this status二rightmovingM;public void leftStop()this xmove=0;/如果当前已经是跳跃状态,应该保密原有状态, if (this status indexOf*( jumping”) !=-l) this status二leftjumping;elsetthis status二leftstanding;public void rightStopO this xmove=0;/如果当前巳经是跳跃状态,应该保留原有状态, if (this, status indexOF( jumping) !=T) th

11、is status=Mrightjumping*;不应该改变状态不应该改变状态不应该改变状态不应该改变状态else!页脚this status=,rightstandi ng” ;public void jump()辻(this.status, indexOf(w jumpingn)=-1) if (this, status. indexOf (n leftH) !=T) this status=*leftjumping*;else!this status=rightjump in gr;ymove=-30;upTime=6;public void down() if (this, statu

12、s. indexOf (w left) !=T) this status=nleftjumping;elsethis status=Mrightjumping*;ymove=30;/mar io的死亡方法public void dead() this life一一;if(this.1ife=0) this show In)age=S ta t i cVa 1 ue mariodeadlmagex this isDead二true;elsethis b|? resetO ;this. x=0;this. y=480;public int getX() return x;public int ge

13、tY() return y;public void setX(int x) this, x = x;页脚public void set(int y) this y 二 y;public BufferedImage getShowImage() return showlinage;public void run() / TODO ?uto-generated method stubwhile(true)if (this. bg. isFlagO&ftthis. x=508) /如果为最后一个场景,同时mario的坐标到达了50&则游戏结束 自动控制游戏结束的務动 this. bg. setOve

14、r(true);辻(this. bg. isDownO) 降旗后,mario开始向城门移动this status=,,rightmoving1;if (this. x568) /nun、io只向右移动this. x+=30;elseif (this. y762) 游戏结束,巳经完成了全部的场景this isClear二true;elseif(this. y=420)this. y=420;this status二rightstanding; else/判断当前mario是否与障碍物碰撞/定义标记页脚boolean canLeft=true;boolean canRight=true;/定义一个

15、当前是否处于障碍物上的标记boolean onLand=false;for(int i=0;ithis y&ob. get()-50this. y&ob. getY()-50this x&ob. getX()-600)if (ob. getY()=this. y-60&(ob. getX()+50this. x&ob getX()-50this. x) I 对于砖块处理辻(ob. getType () =0) 将该砖块从场景中移除this bg. getAllObstruction() remove(ob); /将被移除的砖块保存到一个集合中 this. b# 2EtRemoved0bstnj

16、ction() add(ob); 将分数加10this score+=10;/对于问号的处理和对于隐藏的砖块的处理 if (ob. getType ()=41 |ob. getType ()=3) ob. setType (2);ob. set Image ();页脚this score+=50;upTime=O;/加入对敌人的判断for(int i=0;ithis. x)&(e. getX()-50this. y&e. getY()-6 0this.y) I/mar io 死亡this. dead();辻(e. getY()二二this. y60& (e. getX () +50this x

17、&e. getX () -50600) this, dead ();if(canLeft=true & xmove0) 改变坐标x+=xmove;if(x0)x=0;定义一个图片取得的初始索引值int temp=0;/判断mar io是否面向左辻(this, status. indexOf (n left1*) !=-l) temp+=5;/判断i】un、io是否移动if (this, status. indexOf (moving) !=T) temp+二this moving;moving+;if(moving=4)moving=0;if(this status indexOf(Hjumping*)!=-l)temp十二4;/改变显示图片this showImage=S t a t i c Va1ue alIMario Image, get(temp);tryThread. sZeep(lOO);catch(InterruptedException e)页脚 e. printStackTraceO ;if(this. score=500)this. life+;this score=0;public void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论