目录
摘 要 1
Abstract 2
目录 2

  1. 绪论 1
    1.1. 课题背景 1
    1.2. Java游戏开发的现状 1
    1.2.1. Java日益趋向成熟 1
    1.2.2. Java极大的方便了游戏脚本的使用 2
    1.2.3. Java平台无关特性 2
    1.2.4. Java在手机游戏开发方面的优势 2
    1.2.5. Java在网络方面的良好表现 2
    1.2.6. 游戏速度 3
    1.3. 项目开发的目标 3
    1.4. 项目开发的意义 3
    1.5. 本文章节安排 4
    1.6. 本章小结 4
  2. 开发环境和相关技术简介 5
    2.1. 开发环境 5
    2.1.1. Eclipse 5
    Java 6
    2.1.2. 6
    2.2. 相关技术简介 7
    2.2.1. Eclipse的图形界面开发 8
    2.2.2. Java技术在游戏开发中的应用 8
    2.3. 本章小结 12
  3. 需求分析 13
    3.1. 可行性分析 13
    3.1.1. 技术可行性 13
    3.1.2. 经济可行性 13
    3.1.3. 社会可行性 14
    3.1.4. 操作可行性 14
    3.2. 连连看游戏需求描述及规则描述 14
    3.3. 系统需求分析 14
    3.3.1. 业务需求 15
    3.3.2. 用户需求 15
    3.3.3. 功能需求 16
    3.3.4. 非功能需求 17
    3.4. 本章小结 18
  4. 概要设计 19
    4.1. 模块设计 19
    4.1.1. 连连看系统总体结构 19
    4.1.2. 连连看系统模各模块介绍 19
    4.1.3. 游戏界面模块 20
    4.1.4. 处理模块 20
    4.2. 确定类 20
    4.3. 游戏素材 22
    4.3.1. 背景图片 22
    4.3.2. 游戏图片 22
    4.4. 本章小结 23
  5. 详细设计和实现 24
    5.1. 界面设计 24
    5.1.1. 界面实现 24
    5.1.2. 倒计时沙漏的设计 26
    5.2. 游戏执行的实现 28
    5.2.1. 点击图片的实现及其部分代码 29
    5.2.2. 记分、记关数的实现 30
    5.2.3. 刷新功能的实现 30
    5.2.4. 重新开始游戏功能的实现 32
    5.3. 游戏的连接算法 32
    5.3.1. 连连看连接方式的类型 32
    5.3.2. 连连看连接方式的分析 33
    5.3.3. 部分核心代码 35
    5.4. 本章小结 36
  6. 系统测试 37
    6.1. 软件测试目的及意义 37
    6.1.1. 测试目的 37
    6.1.2. 测试意义 38
    6.2. 测试方法分类 38
    6.3. 测试步骤 39
    6.4. 测试用例 40
    6.5. 测试结果 45
    6.6. 本章小结 45
    结 论 46
    致 谢 47
    参考文献 48
    3.2.  连连看游戏需求描述及规则描述
    游戏规则是模仿网络上普通的连连看游戏,即解决鼠标两次点击的图片能否消去的问题。当然,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予以处理。在两张相同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;如果没有,则不予以处理。
    开始制作游戏时,主要需要解决的问题有以下几个方面:第一,如何设置整个游戏的界面。第二,如何控制连连看游戏中随机图片的生成且每种图片生成个数必须为偶数。第三,游戏开始后,需要判断鼠标两次点击的图片能否消去,即判断图片是否相同且片之间路径是否满足判断要求等。第四,如何实现游戏计时功能、刷新功能、重新开始新一局游戏功能。第五,相关游戏情况展示。
    游戏往往会涉及游戏胜利或失败条件。对于连连看游戏来说,胜利条件是在规定时间内将游戏界面上所有图片全部依照一定规则消除掉。失败条件则相反,指未能或无法在规定时间内将棋盘上面的图片全部消除掉。
    3.3.  系统需求分析
    软件需求分为四个层次,分别是:业务需求、用户需求、功能需求和非功能需求。  
    业务需求主要反映了组织结构或客户对系统、产品高层次的目标要求,通常在项目定义与范围文档中予以说明;用户需求描述了用户使用产品必须要完成的任务,这在实例或方案脚本中予以说明;功能需求定义了开发人员必须实现的软件功能,使用户利用系统能够完成他们的任务,从而满足业务需求;非功能性的需求描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作界面的具体细节和构造上的限制。
    3.3.1.  业务需求
    业务需求针对的是项目组或者公司,描述是公司想如何解决用户的问题,如何满足用户的欲望,并将利益最大化。
    本项目课题是连连看游戏的设计与实现,在业务需求方面,第一,具备连连看基本游戏功能。选择两个图形,判断是否满足一定条件,条件即两个图形一致且二者之间存在转弯少于3的路径。当判定满足这一条件后,两张图片被消除。第二,具备附加功能:计时功能、重新开始功能、刷新当前界面功能等。
    3.3.2.  用户需求
    本项目面向的用户是游戏玩家,对于用户而言,需求有两个方面,一方面,要求游戏界面整齐美观,长时间使用也应尽可能的减小对游戏的审美疲劳。另一方面,要求游戏体验良好。在运行游戏的过程中,能保证数据安全,游戏能稳定、高速地运行。对于游戏本身,用户往往要求游戏功能相对完善,游戏具备可娱乐性,本文转载自http://www.biyezuopin.vip/onews.asp?id=11217并且游戏规则易理解,游戏操作既要简单同时也应有难度,在保证游戏操作顺滑、响应快速的情况下,游戏能具有一定的挑战性。
    通过用例图能更清晰的分析用户需求,如图3-1连连看游戏的用例图。用户在连连看游戏中,能开始游戏、重新开始游戏、重排列游戏、结束游戏、退出游戏、消除图片、查看得分和闯关数等。
5.3.3.部分核心代码
// 判断在一列之内两图片之间是否全部是空白或直接相邻
// 直接相连,因而不包含空白
			if (Math.abs(posY1 - posY2) == 0) {
				return true;
			}
			int a = posY1 < posY2 ? posY1 : posY2;
			int b = posY1 < posY2 ? posY2 : posY1;
			for (int j = a + 1; j < b; j++) {
				if (map[posX1][j] != 0) {
					return false;
				}
			}
// 是否可以一直线相连
if (posX1 != posX2 && posY1 != posY2) {
				return false;
			}
			if (posX1 == posX2) {
				if (containsAllOrNoneZeroInColumn(posX1, posY1, posX2, posY2)) {
					return true;
				}
			}
			if (posY1 == posY2) {
				if (containsAllOrNoneZeroInRow(posX1, posY1, posX2, posY2)) {
					return true;
				}
			}
// 是否可以三直线相连,似之字形N
			if (isOnZigzagWith1Row2Cols(posX1, posY1, posX2, posY2)) {
				return true;
			}
			if (isOnZigzagWith2Rows1Col(posX1, posY1, posX2, posY2)) {
				return true;
			}
// 是否处于游戏区域的4条边的同一边上
			if ((posY1 == posY2 && posY2 == 0)
|| (posY1 == posY2 && posY2 == 8 - 1)
					|| (posX1 == posX2 && posX2 == 0)
					|| (posX1 == posX2 && posX2 == 8 - 1)) {
				return true;
			}		
// 是否可以三直线相连,似之字形, 两行一列 Z
			int moreX = posX1 < posX2 ? posX2 : posX1;
			int lessX = posX1 < posX2 ? posX1 : posX2;
			for (int i = lessX + 1; i < moreX; i++) {
				if (containsAllOrNoneZeroInColumn(i, posY1, i, posY2)
						&& containsAllOrNoneZeroInRow(i, posY1, posX1, posY1)
						&& containsAllOrNoneZeroInRow(i, posY2, posX2, posY2)
						&& map[i][posY1] == 0 && map[i][posY2] == 0) {
					return true;
				}

连连看Java实训报告 连连看java小游戏毕业论文_连连看游戏


连连看Java实训报告 连连看java小游戏毕业论文_java_02


连连看Java实训报告 连连看java小游戏毕业论文_游戏_03


连连看Java实训报告 连连看java小游戏毕业论文_swing_04


连连看Java实训报告 连连看java小游戏毕业论文_swing_05


连连看Java实训报告 连连看java小游戏毕业论文_swing_06


连连看Java实训报告 连连看java小游戏毕业论文_连连看Java实训报告_07


连连看Java实训报告 连连看java小游戏毕业论文_连连看Java实训报告_08


连连看Java实训报告 连连看java小游戏毕业论文_java_09


连连看Java实训报告 连连看java小游戏毕业论文_游戏_10


连连看Java实训报告 连连看java小游戏毕业论文_swing_11


连连看Java实训报告 连连看java小游戏毕业论文_java_12


连连看Java实训报告 连连看java小游戏毕业论文_连连看Java实训报告_13


连连看Java实训报告 连连看java小游戏毕业论文_连连看游戏_14


连连看Java实训报告 连连看java小游戏毕业论文_连连看游戏_15