您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > Android课程设计模板
大庆师范学院《ANDROID应用设计》课程设计报告题目:基于ANDROID的简单扫雷小游戏专业班级:计算机科学与技术(嵌入式方向)设计者:王珂:201101041172王盼盼:201101041173赵玉莹:201101041183刘阳:201101041184李若男:201101041185指导老师:许有军设计时间:2013-2014(1)报告完成日期2013年12月20日-1-一.设计任务及要求(小三黑体)(段前0.5行,段后0.5行,下同)1、设计任务(1)系统会在雷区的某些小方框中随机布小若干个地雷。安放地雷的小方块称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数字,某一个具体数字代表与其紧邻的8个方块中有多少个雷方块。(2)游戏人可以根据(1)中的信息去判断是否可以打开某些方块,并把认为是地雷的方块打上标识。(3)游戏开始后,雷区上方有两个计数器。左边的计数器显示用户扫雷所花的总时间,以秒为单位,(4)当玩家将所有的地雷找出后,其余的地雷方块区都已打开,此时游戏结束。(5)在游戏的过程中,一旦错误的打开了雷方块则立即失败,游戏结束。2、设计要求能够运用android语言设计出扫雷游戏的程序,会搭建android开发环境;会创建自己的android项目生成的文件之间的关系和他们的作用,会使用各种控件;能够对程序进行调试并学会修改其中的错误。3、任务分配王珂:王盼盼;赵玉莹:刘阳:李若男:二.设计原理及总体框图-2-×××××××××(小4号宋体,1.5倍行距)××××××××××××××××××××………1、实现原理:扫雷是一个简单的单人游戏,游戏的目的实在没有触碰任何一个地雷的情形下清空一个雷区。在扫雷游戏中,游戏者。。。2、设计的总体框图:图包括在此说明设计的总体框图及实现原理三.程序设计1、程序分析游戏界面设计:在main.xml中加入三个TableRow,将整体界面划分为三个部分。第一个TableRow中加入两个textview(Timer和MineCount),分别用来显示玩游戏话费的时间(以秒为单位)和雷方块的个数。再加入一个button(Smiley),用来显示图片。第二个TableRow中加入一个textview,用来将第一个部分和第二个部分分开。第三个TableRow中加入一个TableLayout(MineField),用来显示扫雷区的框架。程序的class类:Blocked.Java和MinesweeperGame.java程序的主要函数:游戏开始函数:startNewGame();游戏显示函数:showMineFiled();-3-创建新游戏函数:createMineFiled();完成游戏函数:finishGame();设置时间函数:setmines();玩家胜利函数:winGame();玩家失败函数:endExistingGame();2、程序详解(1)游戏开始函数startNewGameprivatevoidstartNewGame(){//plantminesanddorestofthecalculationscreateMineField();//displayallblocksinUIshowMineField();minesToFind=totalNumberOfMines;isGameOver=false;secondsPassed=0;}privatevoidshowMineField(){//rememberwewillnotshow0thandlastRowandColumns//theyareusedforcalculationpurposes-4-onlyfor(introw=1;rownumberOfRowsInMineField+1;row++){TableRowtableRow=newTableRow(this);tableRow.setLayoutParams(newLayoutParams((blockDimension+2*blockPadding)*numberOfColumnsInMineField,blockDimension+2*blockPadding));for(intcolumn=1;columnnumberOfColumnsInMineField+1;column++){blocks[row][column].setLayoutParams(newLayoutParams(blockDimension+2*blockPadding,blockDimension+2*blockPadding));blocks[row][column].setPadding(blockPaddi-5-ng,blockPadding,blockPadding,blockPadding);tableRow.addView(blocks[row][column]);}mineField.addView(tableRow,newTableLayout.LayoutParams((blockDimension+2*blockPadding)*numberOfColumnsInMineField,blockDimension+2*blockPadding));}}privatevoidendExistingGame(){stopTimer();//stopiftimerisrunningtxtTimer.setText(000);//revertalltexttxtMineCount.setText(010);//revertminescountbtnSmile.setBackgroundResource(R.drawable.smile);-6-//removeallrowsfrommineFieldTableLayoutmineField.removeAllViews();//setallvariablestosupportendofgameisTimerStarted=false;areMinesSet=false;isGameOver=false;minesToFind=0;}privatevoidcreateMineField(){//wetakeonerowextrarowforeachside//overalltwoextrarowsandtwoextracolumns//firstandlastrow/columnareusedforcalculationspurposesonly//x|xxxxxxxxxxxxxx|x//------------------//x||x//x||x-7-//------------------//x|xxxxxxxxxxxxxx|x//therowandcolumnsmarkedasxarejustusedtokeepcountsofnearbyminesblocks=newBlock[numberOfRowsInMineField+2][numberOfColumnsInMineField+2];for(introw=0;rownumberOfRowsInMineField+2;row++){for(intcolumn=0;columnnumberOfColumnsInMineField+2;column++){blocks[row][column]=newBlock(this);blocks[row][column].setDefaults();//passcurrentrowandcolumnnumberasfinalint'stoeventlisteners//thiswaywecanensurethateach-8-eventlistenerisassociatedto//particularinstanceofblockonlyfinalintcurrentRow=row;finalintcurrentColumn=column;//addClickListener//thisistreatedasLeftMouseclickblocks[row][column].setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewview){//starttimeronfirstclickif(!isTimerStarted){startTimer();isTimerStarted=true;}//setminesonfirstclick-9-if(!areMinesSet){areMinesSet=true;setMines(currentRow,currentColumn);}//thisisnotfirstclick//checkifcurrentblockisflagged//ifflaggedthedon'tdoanything//asthatoperationishandledbyLongClick//ifblockisnotflaggedthenuncovernearbyblocks//tillwegetnumberedminesif(!blocks[currentRow][currentColumn].isFlagged()){//opennearbyblockstillwe-10-getnumberedblocksrippleUncover(currentRow,currentColumn);//didweclickedamineif(blocks[currentRow][currentColumn].hasMine()){//Oops,gameoverfinishGame(currentRow,currentColumn);}//checkifwewinthegameif(checkGameWin()){//markgameaswinwinGame();}}}-11-});//addLongClicklistener//thisistreatedasrightmouseclicklistenerblocks[row][column].setOnLongClickListener(newOnLongClickListener(){publicbooleanonLongClick(Viewview){//simulatealeft-right(middle)click//ifitisalongclickonanopenedminethen//openallsurroundingblocksif(!blocks[currentRow][currentColumn].isCovered()&&(blocks[currentRow][currentColumn].getNumberOfMinesInSorrounding()0)&&!isGameOver)-12-{intnearbyFlaggedBlocks=0;for(intpreviousRow=-1;previousRow2;previousRow++){for(intpreviousColumn=-1;previousColumn2;previousColumn++){if(blocks[currentRow+previousRow][currentColumn+previousColumn].isFlagged()){nearbyFlaggedBlocks++;}}}//ifflaggedblockcountisequaltonearbyminecount//thenopennearbyblocksif(nearbyFlaggedBlocks==-13-blocks[currentRow][currentColumn].getNumberOfMinesInSorrounding()){for(intpr
本文标题:Android课程设计模板
链接地址:https://www.777doc.com/doc-6107349 .html