Android手机软件开发设计说明书题目:Android连连看姓名:学号:班级:0指导教师:完成日期:2011.12.181目录第一章功能介绍......................................21.1功能描述.............................................................................................................21.2功能特点............................................................................................................2第二章系统的设计实现.................................32.1结构设计............................................................................................................32.2设计实现............................................................................................................32.2.1设计思想..................................................32.2.2具体实现..................................................42.2.3界面设计说明....................................72.2.4主要算法设计说.......................10总结...............................................11参考文献............................................122Andorid连连看系统设计说明书第一章功能介绍1.1功能描述在连连看游戏中,两张相同图片之间存在通路的条件就是两张图片间某条路径中含有的拐角数不超过两个并且没有其它图片存在。基于这一基本功能完成的同时,这个连连看还有以下一些功能:1、计时器:在游戏过程中同步设置一个计时器,需在规定时间内完成游戏,否则就为游戏失败。2、游戏难度:可以在游戏开始时设置游戏难易程度,其实就是规定时间的不同。游戏的难易程度可以再窗体的游戏难度显示栏上显示。3、暂停:在游戏过程中,玩家可以根据自己的需要暂停游戏,点击start键后又可以返回游戏。4、路径显示:游戏过程中,如果两张所选的相同图片之间存在着通路,就可以用连线显示该组图片间的一条路径,便于玩家观察。1.2功能特点1、用于为玩家提供操作提示,便于玩家了解游戏的规则。2、用于为玩家提供可视化的游戏界面,增加了游戏的可玩性。3、当用户选择菜单时能够快速反应,以满足用户的要求。4、完成图片的消除功能,消除时画线功能,重新排列功能。3第二章系统的设计实现2.1结构设计连连看游戏结构如下:2.2设计实现主要有四个大类:classGameView//游戏视类,处理游戏中的情况,包括界面生成,算法,一部分消息响应。classGameActivity//用于处理游戏中的消息提示classStartActivity//用于菜单的设计ClassSetActivity//用于菜单中游戏难度的设定2.2.1设计思想(1)主要功能:用于为玩家提供操作提示,便于玩家了解游戏的规则。(2)可扩展性:能够适应应用要求的变化和修改,具有灵活的可扩充性.连连看菜单设计界面设计算法设计消息响应设计游戏设置规则说明开始游戏结束游戏框架设计进度条设计消除算法设计画线设计鼠标响应时间响应绘图响应42.2.2具体实现图1.主界面主要有开始游戏、游戏设置、游戏规则、退出游戏等几个选项图2.游戏设置的菜单主要设置游戏的简易程度5图3.进行游戏算法//定义菜单类,接口为OnClickListener,用于接收用户的单击消息。publicclassStartActivityextendsActivityimplementsView.OnClickListener//设计5个按钮用于接收按钮消息:privateButtonbtnStart;privateButtonbtnSet;privateButtonbtnRole;privateButtonbtnAbout;privateButtonbtnExit;//在OnCreate函数中将它们初始化:6//获取按钮btnStart=(Button)findViewById(R.id.btnStart);btnSet=(Button)findViewById(R.id.btnSet);btnRole=(Button)findViewById(R.id.btnRole);btnAbout=(Button)findViewById(R.id.btnAbout);btnExit=(Button)findViewById(R.id.btnExit);//注册点击事件btnStart.setOnClickListener(this);btnSet.setOnClickListener(this);btnRole.setOnClickListener(this);btnAbout.setOnClickListener(this);btnExit.setOnClickListener(this);在OnClick函数中对响应进行处理:setContentView(newGameView(this));//进入游戏,游戏在GameView类中进行了封装//说明游戏规则newAlertDialog.Builder(this).setMessage(1.将相同的两张图片用三根以内的直线连在一起就可以消除\n+2.每消除一次图片,都会使可用时间增加\n+3.每隔一段时间,当前的界面中的图片会进行重排列\n+4.在规定的时间里,当所有的图片都消除时,即为胜利\n+5.规定的时间内有图片未消去,即为失败\n).setPositiveButton(确定,null).show();//结束游戏this.finish();//进行游戏设置,设置游戏的难度,调用了SetActivity类intent.setClass(this,SetActivity.class);72.2.3界面设计说明主要功能:用于为玩家提供可视化的游戏界面,增加了游戏的可玩性。可扩展性:能够适应应用要求的变化和修改,具有灵活的可扩充性。1、功能生成游戏界面,生成进度条。如下图:2、性能能够快速的随机生成符合用户需要的界面3、算法//定义游戏视图类publicclassGameViewextendsView//存储素材图片publicint[]imageType//保存所有小格子中的图片8publicint[][]grid=newint[row][col];//初始化加载图片的类型publicvoidinitType(){//总共要加载的图片intsize=(row-2)*(col-2);//64//每类图片加载的次数(张数)要为偶数intcount=size/imageType.length;//imageType.length=16即,16种图片for(inti=0;iimageType.length;i++){for(intj=0;jcount;j++){type.add(imageType[i]);}}}//初始化网格的设计privatevoidinitGrid(){Randomr=newRandom();for(inti=0;irow;i++){for(intj=0;jcol;j++){if(i==0||i==row-1||j==0||j==col-1){grid[i][j]=0;//四周不设置图片}else{intindex=r.nextInt(type.size());grid[i][j]=type.get(index);type.remove(index);}}}}//设置位图的大小privatevoidititmBitmap(Contextcontext){inttypeLength=imageType.length;image=newBitmap[typeLength];//重新绘制for(inti=0;itypeLength;i++){//创建一个Bitmap的对象Bitmapbitmap=Bitmap.createBitmap((int)width,(int)height,Bitmap.Config.ARGB_8888);//对Bitmap进行绘制Canvascanvas=newCanvas(bitmap);Drawabledwr=context.getResources().getDrawable(imageType[i]);9dwr.setBounds(1,1,30,30);dwr.draw(canvas);image[i]=bitmap;}}//在OnDraw函数中画出框格,每次进行重绘操作//设置背景颜色:PaintbackGround=newPaint();backGround.setColor(Color.WHITE);//画一个矩形canvas.drawRect(0,0,getWidth(),getHeight(),backGround);//设置网格线条的颜色Painthigth=newPaint();higth.setColor(Color.BLUE);//画网格for(inti=0;i10;i++){//画横线、纵线canvas.drawLine(0,height*i,getWidth(),height*i,higth);canvas.drawLine(width*i,0,width*i,getHeight(),higth);}//画image图片booleantest=true;//检测图片是否肖完for(inti=0;irow;i++){for(intj=0;jcol;j++){if(grid[i][j]!=0){canvas.drawBitmap(image[Arrays.binarySearch(imageType,grid[i][j])],i*width,j*height,null);test=false;////还有图片,说明未赢}}}4、接口API函数5、限制条件无明显限制条件102.2.4主要算法设计说明1、程序描述主要功能:完成图片的消除功能,消除时画线功能,重新排列功能。可扩展性:能够适应应用要求的变化和修改,具有灵活的可扩充性。2、功能完成连连看游戏的核心算法。3、性能能够快速判断两图片是否能消除,并能在消除时进行画线操作。隔一段时间,能够打乱顺序进行重新排列。4、输人项用户点击、时间条5、输出项消除匹配的图片11总结通过这一学期的学习,我首次对Andorid系统的开发起源,发展过程、未来趋势以及应用方面进行了初步的文字性的了解,然后在一些参考文献的辅助下下载并搭建了用于amdorid开发的esclipes集成环境,并第一次建立运行简单程序。随后更进一步学习了解了andorid系统中比较复杂的应用程序。在对其主要文件进行分析后,在此基础上开始尝试写一下简单程序。在对这一实际问题进行操作并解决一些问题后,对于andorid程序的编写有了更深一步的认识。不仅增加了对于andorid系统的知识,更重要的是,通过学习提高了自身能力,在对一项新事物,从陌生到了解再到掌握,这些都是之前从未经历过的挑战。通过这一学期的学习让我看清楚了自己需要什么,同时也让我吸取了愈