您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > 课程设计案例-JME手机游戏
河北农业大学本科课程设计题目:J2ME手机游戏系统分析与设计学院:信息科学与技术学院专业班级:计算机科学与技术040X班学生姓名:吴丹(组长)、赵燕(组员)学号:指导教师(职称):李阅历(助教)2OO7年7月6日(目录应为自动生成的)目录1.软件项目计划-------------------------------------------22.软件需求规约-------------------------------------------53.软件设计规约-------------------------------------------154.测试规约--------------------------------------------------245.附录(程序源代码)--------------------------------32注意:此案例仅为举例,同学们做的时候,应包含以下的内容:1、详细的成员分工说明,比如:赵燕(组员):负责系统分析中的用例建模及其文档描述等;2、结合OOSAD,谈一下做此项目的目的与意义,所要使用的技术工具,如Rose、Visual等;3、项目的计划和管理,关键路径的制定,可行性的分析等;4、需求分析,需求获取、用例(典型用例的详细书面描述)、概念数据模型、顺序图、类图(注意从分析类到设计类的转换过程)、其他的动态模型,如活动图、状态图等;5、设计建模(用例实现),包括设计元素、UI设计、数据库建模等;6、实现阶段,代码实现、系统整体部署与测试(可选);7、结论,指出在分析与设计中遇到的问题,和下一步的完善方向;软件项目计划Ⅰ.引言A.游戏名称CatchEggB.计划的目的1.通过实际编程,提高代码的效率,规范性,以及可读性。2.了解J2ME游戏在手机里的实际应用。3.熟悉软件工程分析设计工程C.游戏介绍游戏最终画面如下图片所示:说明:游戏由5个对象组成,分别是背景(bkground),小鸟(bird),母鸡(hen),以及下落的蛋(egg)和盆(pen)。屏幕左上方会随机飞出小鸟,在小鸟飞往右边的消失的时候会随机丢下1到2个蛋,通过控制模拟器上的左右键盘移动母鸡走动,让蛋能够落在母鸡的盆里。下方显示的是接到的蛋的数量,以及显示剩余时间。D:开发环境JDK+J2MEWirelessToolkitⅡ.项目估算A.A.估算技术采用基于LOC估算技术功能LOC估算主生命周期控制50画布200母鸡控制150小鸟控制200蛋控制100总计数值700B.工作量、成本和持续时间的估算每个劳动力的成本为100元/人天平均生产率约为100LOC/人天实际状况下:参与人数为2人,有1条通讯路径,每条降低生产率50LOC/人天实际生产率为200–50=150LOC/天每个LOC的成本约为150/400=2.67元实际工作量估算约为5人天Ⅲ.进度A.项目工作细分结构(1)软件项目计划(2)需求分析(3)概要设计(4)程序编码(5)软件测试B.任务网络C.时间表(甘特图)软件项目计划需求分析概要设计程序编码软件测试工作任务第1日第2日-第4日第5日-第6日第7日-第9日第10日软件项目计划需求分析概要设计程序编码软件测试--表示里程碑。Ⅳ.人员组织A.管理报告项目由2006年1月10开始至1月20日结束,人员分工安排如下:(1)1月10日由项目经理吴一心进行软件项目计划,写出软件项目计划书。(2)1月11日至1月13日由陆兆迪,吴元清进行需求分析,写出需求分析书。(3)1月14日至1月15日由翁建飞进行概要设计,写出软件设计规约书。(4)1月16日至1月18日由吴一心,陆兆迪按照软件设计规约进行程序编码。(5)1月19日吴一心设计测试规约,并由吴一心按照规约进行软件测试。软件需求规约Ⅰ.引言A.系统参考文献《java程序设计教程》中国电力出版社肖晏著《j2me无线平台应用开发》清华大学出版社张小玮著《j2me应动设备程序设计》清华大学出版社胡虚怀著《java2游戏设计》荣钦科技编著B.整体描述完成一个J2ME手机游戏.游戏由5个对象组成,分别是背景(bkground),小鸟(bird),母鸡(hen),以及下落的蛋(egg)和盆(pen)。屏幕左上方会随机飞出小鸟,在小鸟飞往右边的消失的时候会随机丢下1到2个蛋,通过控制模拟器上的左右键盘移动母鸡走动,让蛋能够落在母鸡的盆里。下方显示的是接到的蛋的数量,以及显示剩余时间。Ⅱ.UML视图1.用例图手机玩家控制小鸡接蛋查看目前得分usesusesCatchEgg查看游戏剩余时间uses2.类图MIDletCanvas+CatchEgg():void#startApp():void#pauseApp():void#destroyApp(inunconditional:Boolean):void-myCanvas:MyCanvasCatchEgg+MyCanvas():void#paint(ing):void#keyPressed(inkeyCode:int):void#keyRepeated(inkeyCode:int):void#keyReleased(inkeyCode:int):void+run():void-imgBkground-screenWidth:int-screenHeight:int-score:int-time:int-counter:int-font-hen:Hen-bird:Bird-egg:Egg-th-moveFlag:Boolean-directionFlag:Boolean-overFlag:BooleanMyCanvas接口RunnableFullCanvas+Hen():void+doLeft():void+doRight():void#henX:int#henY:int#imgHenWidth:int#imgHenHeight:int#imgHenIndex:int#imgZPWidth:int#imgZPHeight:int#imgHen#imgZhuPenHen+Egg():void+doDrop():void#eggX:int#eggY:int#imgEggIndex:int#imgEggWidth:int#imgEggHeight:int#imgEgg#alive:Boolean#eggAliveNum:intEgg+Bird():void+prepareFly(inbird:Bird):void+doFly():void+dropOrNot():void#birdX:int#birdY:int#imgBirdIndex:int#imgBirdWidth:int#imgBirdHeight:int#ran#imgBird#alive:Boolean#birdAliveNum:int#dropNum:int#dropX:intBird3.顺序图MyCanvasHenkeyPressed(intkeyCode)doLeft()/doRight()imgHenIndex,henXkeyReleased(intkeyCode)MyCanvasBirdEggprepareFly(Bird[]bird)doDrop()doFly()dropOrNot()birdX,imgBirdIndexbirdX,alive,birdAliveNum,dropNumdropX,dropNumeggX,eggYprepareFly方法只有当Bird.birdAliveNum=0时调用repaint()4.活动图没按方向键按下方向键向左移动向右移动动作和位置属性的变更释放方向键EggMyCanvasBird飞前准备小鸟继续移动继续下蛋不再下蛋蛋继续移动重绘判定小鸟数量是否为零yesno随机决定小鸟是否再下蛋判定蛋是否被接住yesno加10分计时和得分初始化判定计数器是否到指定值一yesno计数器加1计数器清零计时减1计时是否为零显示GAMEOVER显示游戏画面得分不变yesnoⅢ.程序实现A.子程序划分(1)主流程。(2)母鸡移动。(3)鸟的生成。(4)蛋的随机生成。(5)接蛋判断。(6)数据统计。B.子程序描述(1)主流程用一个线程来使3个对象能够在屏幕上动起来,每变一次,线程sleep(100)(2)母鸡移动调用keypressed()和keyrepeated()函数,使的每按一次左右健或者按住左右健,母鸡的坐标变量都能够改变,实现移动(3)鸟的生成用一个随机函数,来判断当前是不是要新生成一只鸟(bird),并给它初始化坐标.(4)蛋的随机生成与鸟的生成类似,只不过它的初始化坐标与鸟的当前坐标有关.(5)接蛋判断用来判断是否接到落下的蛋(6)数据统计负责统计接到蛋的数量以及时间的统计软件设计规约I.过程设计(1)游戏主线程模块A.处理说明游戏的主线程,每次启动游戏,都是用这个模块开始的.B.代码描述importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;publicclassCatchEggGameMIDletextendsMIDlet{/**储存CatchEggCanvas对象的变量*/privateCatchEggGameCanvascatchEggGameCanvas;/**构造函数*/publicCatchEggGameMIDlet(){catchEggGameCanvas=newCatchEggGameCanvas();Display.getDisplay(this).setCurrent(catchEggGameCanvas);}/**MIDlet开始时所调用的方法*/protectedvoidstartApp()throwsMIDletStateChangeException{}/**MIDlet暂停时所调用的方法*/protectedvoidpauseApp(){}/**MIDlet结束时所调用的方法*/protectedvoiddestroyApp(booleanunconditional)throwsMIDletStateChangeException{}}(2)母鸡移动A.处理说明处理母鸡坐标的移动B.代码描述protectedsynchronizedvoidkeyPressed(intkeyCode){intgameCode=getGameAction(keyCode);switch(gameCode){caseLEFT://按下向左按键时leftPressed=true;getZhuPenXY();break;caseRIGHT://按下向右按键时rightPressed=true;getZhuPenXY();break;default:break;}}protectedvoidkeyReleased(intkeyCode){intaction=getGameAction(keyCode);switch(action){caseLEFT:leftPressed=false;henImgInx=3;break;caseRIGHT:rightPressed=false;henImgInx=0;break;default:break;}}(3)鸟的生成A.处理说明让屏幕右上方随机产生鸟B.代码描述voidcreateBird(){if(birdCountbird.length){inttmpInt=random.nextInt()%15;//修改数字能改变bird出现的概率for(inti=0;ibird.length;i++){if(tmpInt==0&&!bird[i].isVisable()){bird[i].setVisable(true);bird[i].setX(bird[i].getWidth()*(-1));birdCount++;frontTime=System.current
本文标题:课程设计案例-JME手机游戏
链接地址:https://www.777doc.com/doc-6015671 .html