连连看小游戏设计说明文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连连看小游戏设计说明文档
1.引言
1.1编写目的:
本文围绕Java编程语言在网络编程方面的具体应用,论述了连连看的整体开发,对连连看小游戏程序进行需求分析、概要设计、详细设计,最后Java编程实现的全过程。
1.2项目背景:
项目名称:
基于Android平台的连连看游戏。
小组成员:
组长:王玉
组员:董文静、李冬、李明、廉瑞婕、刘宇
2.软件概述
2.1目标:
本项目力争成为能让玩家喜欢的一个放松休闲的小游戏,在使用过程中流畅没有错误,并具有一定的娱乐性。
2.2功能:
本软件为游戏软件,纯做娱乐,该游戏属于敏捷类游戏,考验游戏玩家的反应速度以及观察能力,手眼协调一致的能力。
2.3游戏规则:
游戏规则是需选择一对相同的牌连线,但此连线是在避开其他牌子后,呈现的路径以不超过二转弯为主,如符合规定则消除此一对牌。当有一家消除所有牌或有一家认输,游戏结束。
2.4设计结构介绍:
本程序分为主控区,上、下两个分面板,玩家名称文本区域,玩家记分系统。辅助功能有背景音乐,还有背景图片的添加。
1.主控区是核心部分,是含有图片的连连看主程序。
2.上面板记录着鼓励信息,以及玩家游戏过程中产生的分数。
3.下面板含有三个按钮,退出,重列,再来一次。
(a)退出按钮实现退出游戏功能
(b)重列会将图片重列
(c)再来一局按钮将实现重新进行游戏的功能
4.菜单栏里有音效和帮助按钮。
(d)音效按钮可以实现按钮的关停
(e)帮助按钮可以提供帮助信息
2.5运行环境:
安装Android2.2操作系统的手机均可。
3.目录
3.1设计内容:
使用eclipse软件编写连连看小游戏。
3.2设计过程:
3.2.1设计准备:
在设计前构想,做准备,所需物品:1、图片2、音乐。
3.2.2概要设计:
建立Java工程、包、类,进行网上搜索的源程序进行测试及其修改,成为自己想得到的程序,并且定义名字。
改写的连连看算法如下:
前置条件:用一二维数组存放Map,-1表示没有图案可以连通,非-1表示不同的图案。
首先是横向检测:
Java代码:
1.private Boolean horizon(Point a,Point b)
2.{
3.if(a.x==b.x&&a.y==b.y)//如果点击的是同一个图案,直接返
回false
4.return false;
5.int x_start=a.y<=b.y?a.y:b.y;
6.int x_end=a.y<=b.y?b.y:a.y;
7.for(int x=x_start+1;x 接返回false 8.if(map[a.x][x]!=-1) 9.{ 10.return false; 11.} 12.return true; 13.} 其次是纵向检测: Java代码: 1.private Boolean vertical(Point a,Point b) 2.{ 3.if(a.x==b.x&&a.y==b.y) 4.return false; 5.int y_start=a.x<=b.x?a.x:b.x; 6.int y_end=a.x<=b.x?b.x:a.x; 7.for(int y=y_start+1;y 8.if(map[y][a.y]!=-1) 9.return false; 10.return true; 11.} 一个拐角的检测: 如果一个拐角能连通的话,则必须存在C、D两点。其中C点的横坐标和A相同,纵坐标与B相同,D的横坐标与B相同,纵坐标与A相同。 1.private boolean oneCorner(Point a,Point b) 2.{ 3.Point c=new Point(a.x,b.y); 4.Point d=new Point(b.x,a.y); 5.if(map[c.x][c.y]==-1) 6.{ 7.boolean method1=horizon(a,c)&&vertical(b,c); 8.return method1; 9.} 10.if(map[d.x][d.y]==-1) 11.{ 12.boolean method2=vertical(a,d)&&horizon(b,d); 13.} 14.else 15.{ 16.return false; 17.} 18.} 两个拐角的检测: 这个比较复杂,如果两个拐角能连通的话,则必须存在图中所示的连线,这些连线夹在A、B的横、纵坐标之间,这样的线就以下这个类存储,direct是线的方向,用0、1表示不同的方向。 LIne类结构如下: 1.class Line 2.{ 3.public Point a; 4.public Point b; 5.public int direct; 6. 7.public Line() 8.{ 9.} 10. 11.public Line(int direct,Point a,Point b) 12.{ 13.this.direct=direct; 14.this.a=a; 15.this.b=b; 16.} 17.} 从A、B点的横纵两个方向进行扫描,就是Scan函数做的事情,把合适的线用LinkList存起来。 Java代码: 1.private LinkedList scan(Point a,Point b) 2.{ 3.ll=new LinkedList 4.//Point c=new Point(a.x,b.y); 5.//Point d=new Point(b.x,a.y);