分享
《夺宝奇兵》开发文档.doc
下载文档

ID:3398278

大小:475.50KB

页数:9页

格式:DOC

时间:2024-04-28

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
夺宝奇兵 开发 文档
《夺宝奇兵》开发文档 本游戏为连连看类型游戏,老少皆宜,连连看类型游戏有广泛的群众基础。 游戏中一改往常选关模式,设计成关卡挑战模式,玩家总共需要经历6座城市最终到达目的地并获取宝物,玩法方面能够更加的引人入胜。寻找大量宝石做为基本素材,绘制了6类共35种精美宝石图块,游戏界面整体风格美观且统一。 游戏基本结构: 游戏整体为模式化设计,主要由四个类块组成,程序整体结构图如下: _游戏道具类 _用户时间分数类 _关卡处理类 _连连看类 关卡处理类: 负责整个游戏的关卡跟流程处理; 连连看类: 游戏核心算法处理,同时负责游戏图块跟画面的生成跟屏幕输出; 游戏道具类: 处理游戏道具跟数量信息〔功能扩充辅助〕 用户时间分数类: 处理用户名/事件/分数〔功能扩充辅助〕 游戏核心算法详解: 注:由于算法是我自己研究出来的,研究过程中没有参考任何相关资料,可能还有很多不完善的地方,还请谅解!本处主要以图解为主,如果您对算法还有不明白的地方,请直接参考<<夺宝奇兵>>源代码中的连连看类〔具体算法部分在 寻路() 函数中〕 目标:检测A1是否可以链接到B1 算法讲解图片 步骤: 检测A1到A2是否一路都为空数据 真 假 检测B1到B2是否一路都为空数据 真 假 真 假 可以连通 不能连通 从上往下检测A1的Y〔纵向〕坐标跟B1的相同的Y坐标处是否一路为空(本处A1跟B1的Y坐标都等于2时是可以连通的-即A2到B2是可以连通的) 继续检测下一个Y坐标的值 检测Y坐标是否为最大值 真 假 附加说明:通过上面的步骤图解,我们很容易可以理解两个横向图块的连结检测的原理     那么我们如何实现纵向图块的连结呢?其实很简单,请看下图:    对了,算法步骤跟上面的一样,只是横纵向的位置变了。 同理,以下几种情况都可以通过这种方式来处理: 如何横纵向都可以判断呢?思考思考! 呵呵,你想出来了吗?就是先检测横向,如果没有可以连通的图块,则检测纵向,如果都没有,则表示连通失败! 代码参考: 注:本处寻路函数代码段,只为程序的部分代码,并不能直接编译,还有较详细的注释,可直接贴到易语言中做为算法理解的参考 >--------------------------------------------- 代码段开始 ----------------------------------------------< .版本 2 .子程序 寻路, 逻辑型, 公开 .参数 上次坐标, 坐标 .参数 当前坐标, 坐标 .参数 顺序路径坐标, 坐标, 参考 可空 数组, 存放路过的路径信息 .局部变量 循环变量, 整数型 .局部变量 纵向循环, 整数型, , "2" .局部变量 横向循环, 整数型, , "2" .局部变量 临时纵向循环, 整数型 .局部变量 临时横向循环, 整数型 .局部变量 连通成功, 逻辑型 .局部变量 临时整数变量, 整数型 .局部变量 临时坐标变量, 坐标 .局部变量 连接路径, 坐标, , "0" .局部变量 最优位置, 整数型 .如果真 (上次坐标.纵向坐标 ≤ 0 或 上次坐标.横向坐标 ≤ 0 或 当前坐标.纵向坐标 ≤ 0 或 当前坐标.横向坐标 ≤ 0 或 上次坐标.纵向坐标 ≥ _纵向块数 + 2 或 上次坐标.横向坐标 > _横向块数 + 2 或 当前坐标.纵向坐标 > _纵向块数 + 2 或 当前坐标.横向坐标 > _横向块数 + 2) 返回 (假) .如果真结束 .如果真 (_数据数组 [上次坐标.纵向坐标] [上次坐标.横向坐标].数据内容 ≠ _数据数组 [当前坐标.纵向坐标] [当前坐标.横向坐标].数据内容) 返回 (假) .如果真结束 .如果真 (_数据数组 [上次坐标.纵向坐标] [上次坐标.横向坐标].数据内容 = 0 或 _数据数组 [当前坐标.纵向坐标] [当前坐标.横向坐标].数据内容 = 0) 返回 (假) .如果真结束 重定义数组 (连接路径, 假, 0) ' << 纵向路径连通性检测 >> 最优位置 = 0 .计次循环首 (_纵向块数 + 2, 循环变量) ' 先假定路径可以连通 连通成功 = 真 ' << 测试路径连通性 >> ' 判断上次坐标的纵向坐标到[循环变量]是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,上次坐标.纵向坐标) 与 坐标(上次坐标.横向坐标,[循环变量]) 是否能够连通 .变量循环首 (循环变量, 上次坐标.纵向坐标, 选择 (循环变量 > 上次坐标.纵向坐标, -1, 1), 纵向循环 [1]) .如果真 (_数据数组 [纵向循环 [1]] [上次坐标.横向坐标].数据内容 ≠ 0 且 纵向循环 [1] ≠ 上次坐标.纵向坐标) 连通成功 = 假 跳出循环 () .如果真结束 .变量循环尾 () ' 判断当前坐标的纵向坐标到[循环变量]是否能够连通 ' 即判断 坐标(当前坐标.横向坐标,当前坐标.纵向坐标) 与 坐标(当前坐标.横向坐标,[循环变量]) 是否能够连通 .变量循环首 (循环变量, 当前坐标.纵向坐标, 选择 (循环变量 > 当前坐标.纵向坐标, -1, 1), 纵向循环 [2]) .如果真 (_数据数组 [纵向循环 [2]] [当前坐标.横向坐标].数据内容 ≠ 0 且 纵向循环 [2] ≠ 当前坐标.纵向坐标) 连通成功 = 假 跳出循环 () .如果真结束 .变量循环尾 () ' 判断两个坐标的横向坐标与纵向坐标为[循环变量]两点是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,[循环变量]) 与 坐标(当前坐标.横向坐标,[循环变量]) 是否能够连通 .变量循环首 (上次坐标.横向坐标, 当前坐标.横向坐标, 选择 (上次坐标.横向坐标 > 当前坐标.横向坐标, -1, 1), 临时横向循环) .如果真 (_数据数组 [循环变量] [临时横向循环].数据内容 ≠ 0 且 临时横向循环 ≠ 上次坐标.横向坐标 且 临时横向循环 ≠ 当前坐标.横向坐标) 连通成功 = 假 跳出循环 () .如果真结束 .变量循环尾 () .如果真 (连通成功) .如果 (最优位置 = 0) 最优位置 = 循环变量 .否则 最优位置 = 选择 (取绝对值 (上次坐标.纵向坐标 - 循环变量) + 取绝对值 (当前坐标.纵向坐标 - 循环变量) < 取绝对值 (上次坐标.纵向坐标 - 最优位置) + 取绝对值 (当前坐标.纵向坐标 - 最优位置), 循环变量, 最优位置) .如果结束 .如果真结束 .计次循环尾 () .如果真 (最优位置 > 0) ' << 组织正确顺序的路径信息 >> ' 先加入初始节点坐标 加入成员 (连接路径, 上次坐标) .如果真 (上次坐标.横向坐标 ≠ 当前坐标.横向坐标) ' 判断第二个节点坐标 .如果真 (取绝对值 (最优位置 - 上次坐标.纵向坐标) ≠ 0) 临时坐标变量.横向坐标 = 上次坐标.横向坐标 临时坐标变量.纵向坐标 = 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 ' 判断第三个节点坐标 .如果真 (取绝对值 (最优位置 - 当前坐标.纵向坐标) ≠ 0) 临时坐标变量.横向坐标 = 当前坐标.横向坐标 临时坐标变量.纵向坐标 = 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 .如果真结束 ' 最后加入结尾点坐标 加入成员 (连接路径, 当前坐标) 顺序路径坐标 = 连接路径 返回 (真) .如果真结束 ' << 横向路径连通性检测 >> 最优位置 = 0 .计次循环首 (_横向块数 + 2, 循环变量) ' 先假定路径可以连通 连通成功 = 真 ' << 测试路径连通性 >> ' 判断上次坐标的纵向坐标到[循环变量]是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,上次坐标.纵向坐标) 与 坐标(上次坐标.横向坐标,[循环变量]) 是否能够连通 .变量循环首 (循环变量, 上次坐标.横向坐标, 选择 (循环变量 > 上次坐标.横向坐标, -1, 1), 横向循环 [1]) .如果真 (_数据数组 [上次坐标.纵向坐标] [横向循环 [1]].数据内容 ≠ 0 且 横向循环 [1] ≠ 上次坐标.横向坐标) 连通成功 = 假 .如果真结束 .变量循环尾 () ' 判断当前坐标的纵向坐标到[循环变量]是否能够连通 ' 即判断 坐标(当前坐标.横向坐标,当前坐标.纵向坐标) 与 坐标(当前坐标.横向坐标,[循环变量]) 是否能够连通 .变量循环首 (循环变量, 当前坐标.横向坐标, 选择 (循环变量 > 当前坐标.横向坐标, -1, 1), 横向循环 [2]) .如果真 (_数据数组 [当前坐标.纵向坐标] [横向循环 [2]].数据内容 ≠ 0 且 横向循环 [2] ≠ 当前坐标.横向坐标) 连通成功 = 假 .如果真结束 .变量循环尾 () ' 判断两个坐标的横向坐标与纵向坐标为[循环变量]两点是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,[循环变量]) 与 坐标(当前坐标.横向坐标,[循环变量]) 是否能够连通 .变量循环首 (上次坐标.纵向坐标, 当前坐标.纵向坐标, 选择 (上次坐标.纵向坐标 > 当前坐标.纵向坐标, -1, 1), 临时纵向循环) .如果真 (_数据数组 [临时纵向循环] [循环变量].数据内容 ≠ 0 且 临时纵向循环 ≠ 上次坐标.纵向坐标 且 临时纵向循环 ≠ 当前坐标.纵向坐标) 连通成功 = 假 .如果真结束 .变量循环尾 () ' 检测失败便执行下次循环 .如果真 (连通成功 = 假) 到循环尾 () .如果真结束 .如果真 (连通成功) .如果 (最优位置 = 0) 最优位置 = 循环变量 .否则 最优位置 = 选择 (取绝对值 (上次坐标.横向坐标 - 循环变量) + 取绝对值 (当前坐标.横向坐标 - 循环变量) < 取绝对值 (上次坐标.横向坐标 - 最优位置) + 取绝对值 (当前坐标.横向坐标 - 最优位置), 循环变量, 最优位置) .如果结束 .如果真结束 .计次循环尾 () .如果真 (最优位置 > 0) ' << 组织正确顺序的路径信息 >> ' 先加入初始节点坐标 加入成员 (连接路径, 上次坐标) .如果真 (上次坐标.纵向坐标 ≠ 当前坐标.纵向坐标) ' 判断第二个节点坐标 .如果真 (取绝对值 (最优位置 - 上次坐标.横向坐标) ≠ 0) 临时坐标变量.纵向坐标 = 上次坐标.纵向坐标 临时坐标变量.横向坐标 = 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 ' 判断第三个节点坐标 .如果真 (取绝对值 (最优位置 - 当前坐标.横向坐标) ≠ 0) 临时坐标变量.纵向坐标 = 当前坐标.纵向坐标 临时坐标变量.横向坐标 = 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 .如果真结束 ' 最后加入结尾点坐标 加入成员 (连接路径, 当前坐标) 顺序路径坐标 = 连接路径 返回 (真) .如果真结束 返回 (假) >------------------------------------------------ 代码段结束 -------------------------------------------------< 游戏调用素材: 宝石图块合成背景 宝石类型图块 自定义数据类型字典: 坐标 作用:(存储)图块的横纵项位置信息或者图象中点的位置 分数排行 作用:(存储)用户的分数信息 用户信息 作用:(存储)用户(玩家)的所有相关信息 时间信息 作用:(存储)时间的位置跟范围信息 游戏道具 作用:(存储)游戏调用的道具信息 主关卡信息 作用:(存储)主关卡(到达一个具体大的城市附带的关卡总信息,游戏总共包含7个主关) 关卡信息 作用:(存储)游戏的常规关卡信息(游戏总共包含30个普通关) 连连看数据块 作用:(存储)连连看图块数据信息

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开