您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > Java语言课程设计报告格式(连连看)
西安科技大学Java语言课程设计报告题目:基于j2me平台的连连看游戏开发班级:学号:姓名:2011年1月6日目录1设计题目及具体要求………………………………………………………12总体设计说明书……………………………………………………………33详细设计与实现……………………………………………………………64系统测试………………………………………………………………205设计小结………………………………………………………………201设计题目及具体要求1.1题目需求连连看来源于街机游戏四川麻将和中国龙,是给一堆图案中的相同图案进行配对的简单游戏。2003年,一个名叫朱俊的网友将这种游戏模式搬到个人电脑上,立刻成为办公一族的新宠,并迅速传遍了世界各地。连连看考验的是玩家的眼力和记忆力,在有限的时间内,只要把所有能连接的相同的图案,两个一对的找出来,没找出一对(用鼠标点击配对),它们就会自动消失,只要把所有的图案全部消掉就可获得胜利。开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;如何控制连连看游戏中随机图片的生成且每种图片必须为偶数个;游戏开始后,判断键盘两次点击的图片能否消去,即图片是否相同且图片之间路径的判断.设计该游戏仅供学习、研究之用,应用目标是让使用该软件的用户能够在闲暇之时放松一下自己。设计该游戏是因为对手机游戏的喜爱,以及对QQ游戏中的连连看的了解,所以就产生了自己模仿一个的想法。由于本软件是模仿其他类似软件开发的,所以只能供学习、研究之用。1.2实现环境及工具简介1.2.1开发环境(1)硬件环境处理器:800MHz以上CPU或是更高。内存:128MB(建议196MB)。硬盘空间:20MB。(2)软件环境操作系统:Windows98或是Windows2000/WindowsNTServer4.0。开发工具:eclipse-SR2-win32J2MEWirelessToolkit2.21.2.2运行环境Nokia(诺基亚)NokiaDeveloper'sSuite支持J2ME平台的手机。Motorola(摩托罗拉)支持的J2ME平台的手机。其他支持J2ME平台的手机等。2总体设计2.1界面设计模块主要有两个界面:难度选择,游戏开始等菜单界面实现,游戏正式开始的界面。截图如下开始等菜单界面游戏界面2.2系统功能模块连连看游戏系统游戏主框架游戏连线算法设计游戏菜单设计游戏场景设计系统功能模块设计2.3类模块设计因为J2ME平台有一个专门为游戏设计的类GameCanvas,所以游戏场景类继承了GameCanvas类。类图如下:主框架类GameCanvas类游戏场景类游戏菜单类连接线算法类1*1*1*MIDlet类系统类系统类3详细设计与实现3.1主框架模块类名属性方法备注MainFrameprivateDisplaydisplay用于界面显示privateMyCanvasmyCanvas游戏菜单界面privateGamegame游戏运行界面publicclassMainFrameextendsMIDlet{privateDisplaydisplay;privateMyCanvasmyCanvas;privateGamegame;publicProtest(){display=Display.getDisplay(this);System.out.println(构造被调用);}protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{}protectedvoidpauseApp(){}protectedvoidstartApp()throwsMIDletStateChangeException{this.Replay();}voidexit(){this.notifyDestroyed();}voidstart(){game=newGame(this,myCanvas.level);display.setCurrent(game);}voidReplay(){myCanvas=newMyCanvas(this);display.setCurrent(myCanvas);}}3.2游戏菜单模块类名属性方法备注MyCanvasprivateMainFramemainFrame主框架privateImagebackGroundprivatevoiddarwBackground背景图片privateImagesetprivatevoiddarwSet难度设置privateImagehelpprivatevoiddarwHelp帮助图片privateImageaboutprivatevoiddarwAbout关于图片privateImagemenuprivatevoiddarwMenu菜单图片privateintlevel难度系数键盘输入:玩家通过方向键改变菜单的各个状态。菜单中按照“菜单”,“游戏设置”,“关于游戏”,“操作说明”分为4种状态,分别用整形常量标识。当处于“菜单”状态时,玩家通过方向键改变选项,当选择的选项用selected标识,当玩家按下确认键时,则进入相应的游戏选项。当玩家选择“难度设置”选项时,则进入难度选择菜单,玩家可以用方向键改变当前难度,当前难度用level标识。当玩家选择“关于游戏”,“操作说明”时,则显示相关的说明,按下任意键回到菜单。玩家按下“退出游戏”,则退出游戏。键盘处理代码如下:protectedvoidkeyPressed(intkeyCode){intg=this.getGameAction(keyCode);if(statue==MENU){//System.out.println(statue=+statue);switch(g){caseUP:caseLEFT:selected--;if(selected==-1){selected=4;}drawMenu();break;caseRIGHT:caseDOWN:selected++;if(selected==5){selected=0;}drawMenu();break;caseFIRE:switch(selected){case0:protest.start();break;case1:statue=SET;drawSet();break;case2:statue=HELP;drawHelp();break;case3:statue=ABOUT;drawAbout();break;case4:protest.exit();break;}break;}this.repaint();return;}if(statue==SET){//System.out.println(statue=+statue);switch(g){caseUP:caseLEFT:level--;if(level==-1){level=2;}drawSet();break;caseDOWN:caseRIGHT:level++;if(level==3){level=0;}drawSet();break;caseFIRE:statue=MENU;drawMenu();break;}this.repaint();}if(statue==ABOUT||statue==HELP){//System.out.println(statue=+statue);statue=MENU;drawMenu();}this.repaint();}3.3游戏正式界面模块(这里只列出了几个重要的数据)类名属性方法备注GameprivateMatrixmatrix连接线类privateintSeedCount生成的图片数privateImageHintImage[]privatevoiddrawMaze()连接线图片privateThreadthreadpublicvoidrun()倒计时privateintTimeLeft时间privateMainFramemainFrame主框架privateboolisPaused暂停注:Matrix类是判断连接线,生成二维数组,二维数组进行乱排的类。在算法模块中会详细说明。键盘输入:玩家通过键盘控制上下左右,但选择一个图片后按下中间的确定键后,该图片会被选中,在选择另一张图片后,如果可连,这两张图片会消失。否则,玩家重新选择图片。键盘处理代码如下:protectedvoidkeyPressed(intkeyCode){intg=this.getGameAction(keyCode);switch(g){caseUP:direction=0;CurY--;if(CurY=-1)CurY=VCount-1;drawGame();break;caseLEFT:direction=1;CurX--;if(CurX=-1)CurX=VCount-1;drawGame();break;caseRIGHT:direction=2;CurX++;if(CurX=VCount)CurX=0;drawGame();break;caseDOWN:direction=3;CurY++;if(CurY=VCount)CurY=0;drawGame();break;caseFIRE:if(CurX==OldX&&CurY==OldY){OldX=-1;OldY=-1;}elseif(OldX==-1&&OldY==-1){OldX=CurX;OldY=CurY;}else{if(matrix.judge(CurX+1,CurY+1,OldX+1,OldY+1,true)0){matrix.SetAt(OldX,OldY,-1);matrix.SetAt(CurX,CurY,-1);}OldX=-1;OldY=-1;CurX=0;CurY=0;matrix.print();Repaint=20;}drawGame();break;case9:inti;if(Help0){i=matrix.find();intx1=i/1000%VCount;inty1=i/1000/HCount;intx2=i%1000%VCount;inty2=i%1000/HCount;OldX=x1;OldY=y1;CurX=x2;CurY=y2;Help--;}drawGame();break;case10:isPaused=!isPaused;drawGame();break;}this.repaint();}3.4连连看矩阵Matrix类模块该矩阵类主要生成一个指定的二维矩阵,以及初始化矩阵,矩阵交换元素,连接线的判定等。初始化矩阵:首先生成数字。此游戏用一个二维数组来存放生成的数字。此游戏的难度为1级,所以会有20种图像。代码如下:privatevoidinitMatrix(inthS,intvS){HSize=hS;VSize=vS;matrix=newint[HSize+1][VSize+1];intj=0;intb=0;for(intx=1;xHSize;x++){for(inty=1;yVSize;y++){j=1-j;if(j==1){b=((x*HSize+y)/2)%SeedCount;}matrix[x][y]=b;}}shuffleMatrix()方法随机交换种子矩阵的元素,生成一个随机矩阵,代码如下:publicvoidshuffleMetrix(){Randomran=newRandom();//clearTrace();for(intx=1;xHSize;x++){for(inty=1;yVSize;y++){intxx=Math.abs(ran.nextInt())%(HSize-1)+1;intyy=Math.abs(ran.nextInt())%(VSize-1)+1;intb=matrix[x][y];
本文标题:Java语言课程设计报告格式(连连看)
链接地址:https://www.777doc.com/doc-3379819 .html