1、实训项目:连连看实训项目:连连看 一一. 连连看简介连连看简介 游戏“连连看”顾名思义就是找出相关联的东西,该游戏对一堆图案中相 同的图案进行配对,在一定的规则内可以做相关联的处理。玩家可以将 2 个相 同图案的对子连接起来, 连接线不多于 3 根直线, 就可以成功将对子消除。 游戏速度节奏快,画面清晰,并且有多样的图案,可以寻找到挑战的目标,长期 的保持游戏的新鲜感。游戏通过定义数组,根据一定的算法实现规定的路径 判断。 二二. 连连看项目工作流程连连看项目工作流程 1. 开班,进行个人测评之后,组员分配 2. 上交小组项目立项报告 3. 项目正式开始,跟随现场经理学习 C#语言编写代码 4
2、. 进行系统设计。 5. 代码编辑。首先是框架的构造,然后进行界面设计,图片的处理,再就是判断 路径,消除同样的图片,最后进行声音处理。 6. 小组合作完成项目,从而达到系统实现 7. 由项目经理进行项目验收,上交相关文本文档,完成结业 三三. 连连看项目具体内容连连看项目具体内容 本设计采用单机模式,当在规定的时间内消完全部的图片则当前关卡通过, 如果在规定的时间内没能消完所有的图片则游戏结束,重新开始新游戏。 游戏规则是模仿普通的连连看游戏, 主要是鼠标两次点击的图片能否消去的 问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同 的图片,则不予处理。在两张想同图片用三根
3、以内的直线能连在一起,就可以消 去;否则,不予处理。 考虑到本游戏软件是单机小游戏,所以充分考虑到了它的娱乐性,并没有很 复杂的功能。 系统结构图: 四基本思路四基本思路 1.游戏画面 画面,对于设计者来说,可以算是最简单的地方;但对于玩家,这却是最重 要的,一般玩家不会关心你是怎么实现的,他所关心的是画面的美观,漂亮,是 不是能让人赏心悦目。 2.获取图片位置 通过数组从图片库随即获取规定个数得到图片,随机分布在画布上。图片个 数一定是偶数个。 3.路径判断的思路 连连看所要求的是: 1:两个目标是相同的 2:两个目标之间连接线的折点不超过两个。 (连接线由 x 轴和 y 轴的平行线 组成)
4、 那么分析一下连接的情况可以看到,一般分三种情况 1:直线相连 2:一个折点 3:两个折点: 可以发现,如果有折点,每个折点必定有且至少有一个坐标(x 或者 y)是 和其中一个目标点是相同的,也就是说,折点必定在两个目标点所在的 x 方向或 y 方向的直线上。 所以设计思路就是: 假设目标点 p1 , p2 ,如果有两个折点分别为 z1 , z2 那么,所要进行的 是 1:如果验证 p1 , p2 直线连线,则连接成立 2:搜索以 p1,p2 的 x,y 方向四条直线(可能某两条直线会重合)上的有限 点, 每次取两点作为z1,z2 ,验证p1到z1/z1到z2/z2到p2 是否都能直线相连 ,
5、 是则连接成立。 五代码五代码 1.主界面的设计 由于这个程序的界面并不是很复杂,所以用到的控件也不多,主要核心内容 还是后台的代码设计。图片的随机生成主要是用到一个 random()函数将随机数 赋值给 flag数组中的每个元素,然后根据数组元素值,来显示图片。 2.图片的随机生成 实现这个功能要分很多个步骤: 程序运行时即载入游戏需要的 N 张图片,默认情况下图片种类数是 18,重复 数是 4(重复数必须是偶数) ,并且可以选择是否重列。通过一个循环,加载随 即的选择 N 种图片。具体载入图片的代码如下: /加载图 private void IniteBmp(int maxnum) g_g
6、 = this.CreateGraphics(); for (int i = 0; i y2 ? y2 : y1; int miny = smaller+ 1; while (mapx1, miny = BLANK) miny+; if (miny = N) break; if (miny = bigger) return true; else return false; if (y1 = y2) int bigger = x1 x2 ? x1 : x2; int smaller = x1 x2 ? x2 : x1; int minx = smaller + 1; while (mapminx, y1 = BLANK) minx+; if (minx = M) break; if (minx = bigger) return true; else return false; return false; public int FindEmpty(int x, int y, ref P