移动平台游戏软件开发课程设计说明书.docx
《移动平台游戏软件开发课程设计说明书.docx》由会员分享,可在线阅读,更多相关《移动平台游戏软件开发课程设计说明书.docx(21页珍藏版)》请在冰豆网上搜索。
移动平台游戏软件开发课程设计说明书
长沙学院
课程设计说明书
题目
洪山战机
系(部)
计算机科学与技术系
专业(班级)
XXXXXX
姓名
XXXXX
学号
XXXXXX
指导教师
XXXXXXX
起止日期
2012.12.3-2012.12.30
课程设计任务书
课程名称:
综合实训
设计题目:
移动平台游戏软件开发
已知技术参数和设计要求:
1.实训目的要求
通过本实训,应能够对J2me移动开发平台有详尽的了解,并能够使用该平台灵活自如的开发Kjava平台手机游戏项目。
1)了解手机游戏发展与盈利模式及J2me平台的简史和功能特性。
2)掌握MIDlet套件的框架结构及MIDlet的生命周期。
3)掌握低级用户界面开发的核心类库各类的使用。
4)掌握低级按键事件的使用。
5)掌握各类型游戏的功能特点实现技巧。
6)掌握使用MMAPI来实现多媒体文件的播放。
7)掌握实用RMS体系来实现游戏软件的记录存储功能。
2.问题描述(功能要求):
本次案例将完成一个基于J2ME平台的手机游戏软件。
(1)游戏菜单选项的实现,并实现每个选项下一级功能。
(2)游戏主流程及逻辑的实现。
(3)游戏关卡实现。
(4)游戏音乐的实现。
(5)游戏按键的实现。
(6)游戏UI界面的实现。
(7)游戏场景的实现。
(8)游戏精灵的实现。
(9)游戏记录存储的实现。
(10)游戏得分的实现。
3.环境要求:
1)开发环境要求
Eclipse+SonyEricssonSdk+EclipseMe
2)实际运行环境
支持KJAVA的所有手机。
设计工作量:
80课时
工作计划:
(1)2010级软件工程所有班级
26课时:
理论、设计。
(普通教室)
50课时:
上机、调试。
(计算机系机房)
4课时:
答辩。
计算机系机房。
(具体时间地点老师先申请,机动安排)
指导教师签名:
日期:
教研室主任签名:
日期:
系主任签名:
日期:
长沙学院课程设计鉴定表
姓名
XXXX
学号
XXXXX
专业
软件工程
班级
XXXXX
设计题目
洪山战机
指导教师
XXXXXXXX
指导教师意见:
评定等级:
教师签名:
日期:
答辩小组意见:
评定等级:
答辩小组长签名:
日期:
教研室意见:
教研室主任签名:
日期:
系(部)意见:
系主任签名:
日期:
说明
课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;
1引言
1.1编写目的
在完成了软件系统的需求分析和用例描述的基础上,为了明确软件需求、安排项目规划与进度、组织软件开发与测试,项目小组各组员在考虑了几种可能的解决方案,并在组内进行了较为深入地探讨和分析之后,提出了这份概要设计说明书。
此文档对《洪山战机》项目的解决方案、功能分配、模块化分、程序的总体结构、输入输出和接口设计、运行设计及出错设计等方面作了全面的概括性的说明,为该软件的详细设计奠定了基础。
此文档为本次实训工作的阶段性总结,并为指导老师、设计人员和开发人员、维护人员提供参考。
1.2项目背景
1、软件名称:
洪山战机
2、项目任务提出者:
长沙大学计算机科学与技术系
3、开发者:
长沙大学计算机科学与技术系软件B班“洪山”项目组
4、使用者:
系统管理人员、系统测试人员、系统维护人员
5、维护机构:
长沙大学计算机科学与技术系软件B班“洪山”项目组
6、开发工具:
Java
1.3名词解释
int整形数据
char字符型数据
1.4参考资料
[1]刘葵等编,J2ME手机游戏开发技术。
[2]刘葵等编,手机游戏JAVA语言基础。
2需求规约
2.1业务描述
《洪山战机游戏》是一款平面2D射击类游戏,玩家通过操控一个战机进行游戏,本游戏DEMO版本共设计3个关卡,玩家需要通关前一个关卡后才可激活下一个关卡并进行游戏,本游戏主要的玩点在于玩家控制战机灵活躲避敌人战机的攻击,并对敌方进行不停攻击,直到击败最终的BOSS获得胜利!
在游戏过程中玩家需要注意敌方子弹,一旦子弹打击到自身战机,战机则会阵亡,如果有如果没有备用生命,游戏将结束.玩家在游戏过程中特别需注意,自身战机具备可消耗的雷,当释放雷时,屏幕中的子弹将消失,并且屏幕中所有的敌方战绩将全部扣除一定血亮,玩家可通过拾取道具补充雷数量并且在保证自身存活的前提下,玩家需要通过拾取异化雷来提升自身战机的战斗力。
2.2功能需求
(1)游戏滚屏功能;
(2)游戏退出与暂停功能;
(3)主角与敌机攻击;
(4)最大BOSS机的技能攻击;
(5)主角移动
2.3性能需求
游戏可玩性高;不存在BUG;游戏画面清晰,流畅,操作通俗易懂;关卡分明,每一关的游戏难度都增加,能让玩家的好奇性于挑战心态得到发挥;玩家可以自行选择游戏难易程度,使玩家能跟快速的学会游戏并挑战更高难度的游戏模式,增加游戏的可玩性于挑战性。
3总体设计
3.1框架设计
游戏框架如图3.1所示,用户通过菜单界面进行选择。
图3.1游戏框架
3.2模块划分
游戏开始时的菜单:
游戏开始
最高记录
游戏设置
退出
帮助
游戏设置的菜单:
背景音效(打开、关闭)
游戏中的菜单:
游戏继续
是否保存游戏
返回主菜单
游戏通关菜单
下一关
返回主菜单
游戏失败菜单
继续游戏
返回主菜单
4.详细设计
4.1模块设计要求
(1)开始游戏
控制玩家移动、控制玩家射击、敌机移动、敌机发射子弹、显示得分、显示玩家生命值、释放技能。
(2)设置
设置背景音乐的开、关。
(3)帮助
包括游戏的介绍、操作规则的说明。
(4)排行榜
4.2模块详细设计
4.2.1游戏模块设计
包括游戏中玩家射击敌机,玩家的移动。
敌机的移动以及发射子弹射击玩家。
另外,还的显示当前玩家的得分情况以及生命值。
除此之外,还得通过随机释放技能点。
让玩家适当的改变自身的技能属性。
如,增加生命力、子弹威力等。
图4.1游戏中画面
玩家部分结构[原始模型]与代码如下:
运动设计:
Plane原型与测试Midlet
Plane.class
importjavax.microedition.lcdui.Graphics;
importjavax.microedition.lcdui.Image;
publicclassPlaneextendsSprite{
/**
*前进
*/
staticintUP=1;
/**
*后退
*/
staticintDOWN=2;
/**
*左边
*/
staticintLEFT=3;
/**
*右边
*/
staticprivateintRIGHT=4;
//privateintx,y;//角色的位置
//privateintmw,mh;//角色的宽高
//privateImageimg;//角色所在的大图
privateintframeIndex;//当前帧
privateintframeNum;//总帧数
/**
*此对象被创建后会得到总帧数frameNum
*@paramimg大图对象
*@parammw角色的宽
*@parammh角色的高
*/
Plane(Imageimg,intmw,intmh){
super(img,mw,mh);
this.frameNum=img.getWidth()/mw;
System.out.println("帧总数"+frameNum);
}
publicintgetFrameIndex(){
returnframeIndex;
}
publicvoidsetFrameIndex(intframeIndex){
this.frameIndex=frameIndex;
}
publicintgetFrameNum(){
returnframeNum;
}
publicvoidsetFrameNum(intframeNum){
this.frameNum=frameNum;
}
/**
*得到用户按键的方向,做出事件响应
*@paramdirection方向
*/
publicvoidnextFrame(intdirection)
{
if(direction==UP){
frameIndex=frameNum/2;
}
if(direction==DOWN){
frameIndex=frameNum/2;
}
if(direction==LEFT){
if(frameIndex==0)return;
frameIndex--;
}
if(direction==RIGHT){
if(frameIndex==frameNum-1)return;
frameIndex++;
}
}
publicvoidsetPosition(intx,inty)
{
this.x=x;
this.y=y;
}
publicvoidplaneDraw(Graphicsg)
{
inttempx=frameIndex*this.getW();
System.out.println(tempx);
Tools.drawClipImage(g,img,x,y,tempx,0,this.getW(),this.getH(),TestCanvas.w,TestCanvas.h);
}
publicvoidmove(intdx,intdy)
{
x+=dx;
y+=dy;
}
publicvoidupdatePlane(){
if(TestMidlet.tc.isup&&this.getY()>0){
nextFrame(UP);
move(0,-4);
}
elseif(TestMidlet.tc.isdown&&this.getY()nextFrame(DOWN);
move(0,4);
}
elseif(TestMidlet.tc.isleft&&this.getX()>0){
nextFrame(LEFT);
move(-4,0);
}
elseif(TestMidlet.tc.isright&&this.getX()nextFrame(RIGHT);
move(4,0);
}
}
}
//Tools.class
importjavax.microedition.lcdui.Graphics;
importjavax.microedition.lcdui.Image;
/**
*当前工具类里面有二个方法
*1,通过url的得到图片对象
*2,对图片对象进行clip,画出大图里面的局部小图
*3,方法定义都为static静态类型
*@authorYI
*/
publicclassTools{
/**
*
*@paramg画刷对象
*@paramimg图片对象
*@paramx大图的x坐标
*@paramy大图的y坐标
*@parammx小图在大图里面的相对x坐标
*@parammy小图在大图里面的相对y坐标
*@parammw小图的宽
*@parammh小图的高
*@paramw屏幕的宽
*@paramh屏幕的高
*/
publicstaticvoiddrawClipImage(Graphicsg,Imageimg,intx,inty,intmx,intmy,intmw,intmh,intw,inth)
{
g.setClip(x,y,mw,mh);//画以(x,y)坐标为外接矩形起始点,截取显示区域为宽:
mw,高:
mh
g.drawImage(img,x-mx,y-my,0);//画出对应位置上的小图
g.setClip(0,0,w,h);//还原
}
/**
*
*@paramurlName图片的相对路径
*@return
*/
publicstaticImagegetImage(StringurlName)
{
Imageimg=null;
try{
img=Image.createImage(urlName);//通过路径创建图片对象
}catch(Exceptionex)
{
ex.printStackTrace();
}
returnimg;
}
}
4.2.2菜单模块设计
包括排行榜、设置、帮助、退出的设计。
主要有设置背景音乐的开与关,帮助中展示游戏的简介及操作方法。
排行榜展示得分及排名。
图4.4设置界面图
关键代码如下:
/**
*绘制菜单
*@paramg
*/
publicvoiddrawMenu(Graphicsg)
{
clearScreen(g);//刷屏
g.drawImage(img3,w/2,h/2,Graphics.VCENTER|Graphics.HCENTER);
g.drawImage(img4,20,55+pointIndex*27,0);
}
/**
*设置界面
*@paramg
*/
publicvoiddrawSet(Graphicsg)
{
clearScreen(g);//刷屏
g.drawImage(img6,w/2,h/2,Graphics.HCENTER|Graphics.VCENTER);
g.drawImage(img4,40,75+pointIndexSet*50,0);
g.drawString("返回",w,h,Graphics.BOTTOM|Graphics.RIGHT);
}
/**
*刷屏
*@paramg
*/
publicvoidclearScreen(Graphicsg)
{
g.setColor(0xffffff);
g.fillRect(0,0,w,h);
g.setColor(0x000000);
}
publicvoidkeyPressed(intkey)
{
switch(key)
{
case-1:
//上键
if(menuState==MENU&pointIndex>0)
pointIndex--;
if(menuState==SET&pointIndexSet>0)
pointIndexSet--;
break;
case-2:
//向下键
if(menuState==MENU&pointIndex<5)
pointIndex++;
if(menuState==SET&pointIndexSet<1)
pointIndexSet++;
break;
case-7:
//右键
if(menuState!
=MENU|menuState!
=LOGO)
menuState=MENU;
break;
case-5:
//中键
if(menuState==SET)//设置音乐
{
switch(pointIndexSet)
{
case0:
isMusic=true;
break;
case1:
isMusic=false;
break;
}
}
if(menuState==MENU)//菜单选项
{
switch(pointIndex)
{
case0:
menuState=GAME;
break;
case1:
//menuState=LOAD;
break;
case2:
//排行榜
//menuState=RANK;
break;
case3:
menuState=SET;
break;
case4:
//menuState=HELP;
break;
case5:
menuState=EXIT;
break;
}
}
break;
}
}
5功能测试
5.1游戏功能测试
【覆盖功能点】玩家的移动及射击
【测试输入】多组测试样例
【测试输出】玩家向上、下、左、右移动及发射子弹。
【测试结论】设置功能测试成功无误,可以执行
【部分截图】
图5.1游戏功能测试
5.2设置功能测试
【覆盖功能点】背景音乐的开与关
【测试输入】多组测试样例
【测试输出】有背景音乐或者没背景音乐
【测试结论】设置功能测试成功无误,可以执行
【部分截图】
图5.1设置功能测试
6总结
1.团队的协调。
在项目开发中此点尤其重要。
2.整个项目开发过程中,小组各个成员应分工明确。
3.在项目开发前应该有一个完整的开发方案,开发人员必须对所做的项目有一定的了解,即知道要做什么以及如何去做。
注:
合同范本有风险,使用需谨慎,法律是经验性极强的领域,范本无法思考和涵盖全面,最好找专业律师起草或审核后使用,谢谢您的关注!