1、连连看C++项目设计要求: 1. Visual C++2005可视化设计,WIN32 SDK完成。 2. 单机版功能要求:必须完成附录1的基本规则要求。 3. 初期先设计单机版,设计时兼顾考虑联机版的设计,可以联机对战。 4. 在单机版完成的情况下,完成联机版的设计,支持至少两人对战。 5. 请注意设计好项目完成的进度,不要超时。 2、主要设计思路:(仅供参考) 把一个连连看地图看做一个二维数组,每个图案看做是二维数组中的一个元素,给每个元素赋值,把空白的地方赋值为0,图案相同的元素有相同的值,判断值相同的两个元素之间路径是否满足游戏规则,满足则将这两个元素值修改为0,不满足则继续进行判断。 3、实现
提示:(仅供参考) 1. 用BitBlt()函数输出图案。图案可以考虑采用MSN/QQ的图案。 2. 用rand()产生随机的图案位置。 3. 相同的图案消去后,要记住图案在屏幕的位置,可以考虑用InvalidateRect()去刷新屏幕。 4. 网络上的连连看程序大部分都是MFC实现的,而我们要求用WIN32 SDK实现,它们仅供参考。可以像MFC一样设计一些类,把一些相同的常用的WIN32 API封装起来,用类的成员或成员函数来调用这些WIN32 API函数。 5. 可以考虑用STL的list, vector等简化代码。 6. 可能用到的API函数,不一定都会用到:CreateSolidBrush(),FillRect(), SelectObject(),DeleteObject(),CreateCompatibleD(),SetRect(),BitBlt(),SetTimer(),KillTimer(),MoveToEx(),LineTo(),CreatePen(),SetTextColor(),SetBkMode(),TextOut(),GetClientRect(),LoadBitmap(),DrawEdge(),GetClientRect(),ReleaseDC(),GetDC(),wsprintf(),DrawText()。具体用法请参考手册。联机版可能用到CreateThread(),recv(),connect()等。 7. 如何消去相同图案的算法,请自行参考网上的资料。可以输入“连连看算法” 查找相关资料。 附录1: 基本规则 概要 玩家可以将 2 个相同图案的对子连接起来,连接线不多于 3 根直线,就可以成功将对子消除。 操作 第一次使用鼠标点击棋盘中的棋子,该棋子此时为“被选中”,以特殊方式显示;再次以鼠标点击其他棋子,若该棋子与被选中的棋子图案相同,且把第一个棋子到第二个棋子连起来,中间的直线不超过 3 根,则消掉这一对棋子,否则第一颗棋子恢复成未被选中状态,而第二颗棋子变成被选中状态 胜利条件 · 将棋盘上面的对子全部消除掉。 附录2: 阿达连连看游戏规则及其他(仅供参考,不需要都实现) 游戏规则玩法说明 1、玩法说明: 这是针对小朋友制作的神奇宝贝图案版游戏,最主要是训练眼明手快及增强逻辑判断能力。 游戏规则是需选择一对相同的牌连线,但此连线是在避开其他牌子后,呈现的路径以不超过二转弯为主,如符合规定则消除此一对牌而得分。每一局里玩家需要在规定的时间内消除所有的牌子,当完成任务后,方能进行下一关,当出现残局时,游戏会自动重新洗牌,游戏结束后会以玩家的得分多寡来决定是否登录排行榜。 2、生命点数说明: 生命点数,等同于洗牌次数。当出现无解的局面时,游戏会自动扣掉一点生命点数,而重新洗牌。游戏一开始会给玩家一些生命值,每过一关会增加一点。 玩家使用“重新洗牌”功能,则会扣除1点生命点数。如果生命点数等于0,而且局面出现无解,则游戏结束。 3、提示说明: 使用“提示”功能,游戏会自动显示一组可以消除的牌组。游戏一开始会结玩家一些提示值,每过一关会增加一点。 4、分数说明: 分数上的设计,每过一关,则会依照比例加重给分。 时间、生命值、提示点数都依照关数,以某种比例给分。 另外过关也会额外加分(例如第一关+200,第二关+400,第七关+2800) 5、菜单说明: 【提示】:自动显示一组可以消除的牌组,有次数限制。 【重新洗牌】:扣除一点生命点数,并重新换牌,有次数限制。重新洗牌功能,也可以用來自杀... 【暂停/取消暂停】:按回车键可暂停时间、隐藏牌面(最小化状态);再用鼠标点击屏幕底部任务栏中连连看项,可展开牌面并继续游戏。 【音乐开关】:音乐开关,预设是开。 【音效开关】:音效开关,预设是开。 【查看榜单】:观看本机上的排行榜,里面有选项可以消除本机上的所有排行榜。 【关于】:作者 6、关卡說明(每种难度均有11关): 第0关 不变化 第1关 向下 第2关 向左 第3关 上下分离 第4关 左右分离 第5关 上下集中 第6关 左右集中 第7关 上左下右 第8关 左下右上 第9关 向外扩散 第10关 向内集中