版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、夺宝奇兵开发文档本游戏为连连看类型游戏,老少皆宜,连连看类型游戏有广泛的群众基础。游戏中一改往常选关模式,设计成关卡挑战模式,玩家总共需要经历6座城市最终到达目的地并获取宝物,玩法方面能够更加的引人入胜。寻找大量宝石做为基本素材,绘制了6类共35种精美宝石图块,游戏界面整体风格美观且统一。游戏基本结构:游戏整体为模式化设计,主要由四个类块组成,程序整体结构图如下:_游戏道具类_用户时间分数类_关卡处理类_连连看类关卡处理类:负责整个游戏的关卡跟流程处理;连连看类:游戏核心算法处理,同时负责游戏图块跟画面的生成跟屏幕输出;游戏道具类:处理游戏道具跟数量信息功能扩充辅助用户时间分数类:处理用户名/
2、事件/分数功能扩充辅助游戏核心算法详解:注:由于算法是我自己研究出来的,研究过程中没有参考任何相关资料,可能还有很多不完善的地方,还请谅解!本处主要以图解为主,如果您对算法还有不明白的地方,请直接参考<<夺宝奇兵>>源代码中的连连看类具体算法部分在 寻路() 函数中目标:检测A1是否可以链接到B1算法讲解图片步骤:检测A1到A2是否一路都为空数据真假检测B1到B2是否一路都为空数据真假真假可以连通不能连通从上往下检测A1的Y纵向坐标跟B1的相同的Y坐标处是否一路为空(本处A1跟B1的Y坐标都等于2时是可以连通的即A2到B2是可以连通的)继续检测下一个Y坐标的值检测Y坐标
3、是否为最大值真假附加说明:通过上面的步骤图解,我们很容易可以理解两个横向图块的连结检测的原理那么我们如何实现纵向图块的连结呢?其实很简单,请看下图:对了,算法步骤跟上面的一样,只是横纵向的位置变了。同理,以下几种情况都可以通过这种方式来处理:如何横纵向都可以判断呢?思考思考!呵呵,你想出来了吗?就是先检测横向,如果没有可以连通的图块,则检测纵向,如果都没有,则表示连通失败!代码参考:注:本处寻路函数代码段,只为程序的部分代码,并不能直接编译,还有较详细的注释,可直接贴到易语言中做为算法理解的参考>- 代码段开始 -<.版本 2.子程序 寻路, 逻辑型, 公开.参数 上次坐标, 坐标
4、.参数 当前坐标, 坐标.参数 顺序路径坐标, 坐标, 参考 可空 数组, 存放路过的路径信息.局部变量 循环变量, 整数型.局部变量 纵向循环, 整数型, , "2".局部变量 横向循环, 整数型, , "2".局部变量 临时纵向循环, 整数型.局部变量 临时横向循环, 整数型.局部变量 连通成功, 逻辑型.局部变量 临时整数变量, 整数型.局部变量 临时坐标变量, 坐标.局部变量 连接路径, 坐标, , "0".局部变量 最优位置, 整数型.如果真 (上次坐标.纵向坐标 0 或 上次坐标.横向坐标 0 或 当前坐标.纵向坐标 0
5、或 当前坐标.横向坐标 0 或 上次坐标.纵向坐标 _纵向块数 2 或 上次坐标.横向坐标 _横向块数 2 或 当前坐标.纵向坐标 _纵向块数 2 或 当前坐标.横向坐标 _横向块数 2) 返回 (假).如果真结束.如果真 (_数据数组 上次坐标.纵向坐标 上次坐标.横向坐标.数据内容 _数据数组 当前坐标.纵向坐标 当前坐标.横向坐标.数据内容) 返回 (假).如果真结束.如果真 (_数据数组 上次坐标.纵向坐标 上次坐标.横向坐标.数据内容 0 或 _数据数组 当前坐标.纵向坐标 当前坐标.横向坐标.数据内容 0) 返回 (假).如果真结束重定义数组 (连接路径, 假, 0)' &
6、lt;< 纵向路径连通性检测 >>最优位置 0.计次循环首 (_纵向块数 2, 循环变量) ' 先假定路径可以连通 连通成功 真 ' << 测试路径连通性 >> ' 判断上次坐标的纵向坐标到循环变量是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,上次坐标.纵向坐标) 与 坐标(上次坐标.横向坐标,循环变量) 是否能够连通 .变量循环首 (循环变量, 上次坐标.纵向坐标, 选择 (循环变量 上次坐标.纵向坐标, -1, 1), 纵向循环 1) .如果真 (_数据数组 纵向循环 1 上次坐标.横向坐标.数据内容 0 且
7、纵向循环 1 上次坐标.纵向坐标) 连通成功 假 跳出循环 () .如果真结束 .变量循环尾 () ' 判断当前坐标的纵向坐标到循环变量是否能够连通 ' 即判断 坐标(当前坐标.横向坐标,当前坐标.纵向坐标) 与 坐标(当前坐标.横向坐标,循环变量) 是否能够连通 .变量循环首 (循环变量, 当前坐标.纵向坐标, 选择 (循环变量 当前坐标.纵向坐标, -1, 1), 纵向循环 2) .如果真 (_数据数组 纵向循环 2 当前坐标.横向坐标.数据内容 0 且 纵向循环 2 当前坐标.纵向坐标) 连通成功 假 跳出循环 () .如果真结束 .变量循环尾 () ' 判断两个
8、坐标的横向坐标与纵向坐标为循环变量两点是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,循环变量) 与 坐标(当前坐标.横向坐标,循环变量) 是否能够连通 .变量循环首 (上次坐标.横向坐标, 当前坐标.横向坐标, 选择 (上次坐标.横向坐标 当前坐标.横向坐标, -1, 1), 临时横向循环) .如果真 (_数据数组 循环变量 临时横向循环.数据内容 0 且 临时横向循环 上次坐标.横向坐标 且 临时横向循环 当前坐标.横向坐标) 连通成功 假 跳出循环 () .如果真结束 .变量循环尾 () .如果真 (连通成功) .如果 (最优位置 0) 最优位置 循环变量 .否则 最优位置
9、选择 (取绝对值 (上次坐标.纵向坐标 循环变量) 取绝对值 (当前坐标.纵向坐标 循环变量) 取绝对值 (上次坐标.纵向坐标 最优位置) 取绝对值 (当前坐标.纵向坐标 最优位置), 循环变量, 最优位置) .如果结束 .如果真结束.计次循环尾 ().如果真 (最优位置 0) ' << 组织正确顺序的路径信息 >> ' 先加入初始节点坐标 加入成员 (连接路径, 上次坐标) .如果真 (上次坐标.横向坐标 当前坐标.横向坐标) ' 判断第二个节点坐标 .如果真 (取绝对值 (最优位置 上次坐标.纵向坐标) 0) 临时坐标变量.横向坐标 上次坐标
10、.横向坐标 临时坐标变量.纵向坐标 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 ' 判断第三个节点坐标 .如果真 (取绝对值 (最优位置 当前坐标.纵向坐标) 0) 临时坐标变量.横向坐标 当前坐标.横向坐标 临时坐标变量.纵向坐标 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 .如果真结束 ' 最后加入结尾点坐标 加入成员 (连接路径, 当前坐标) 顺序路径坐标 连接路径 返回 (真).如果真结束' << 横向路径连通性检测 >>最优位置 0.计次循环首 (_横向块数 2, 循环变量) ' 先假定路
11、径可以连通 连通成功 真 ' << 测试路径连通性 >> ' 判断上次坐标的纵向坐标到循环变量是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,上次坐标.纵向坐标) 与 坐标(上次坐标.横向坐标,循环变量) 是否能够连通 .变量循环首 (循环变量, 上次坐标.横向坐标, 选择 (循环变量 上次坐标.横向坐标, -1, 1), 横向循环 1) .如果真 (_数据数组 上次坐标.纵向坐标 横向循环 1.数据内容 0 且 横向循环 1 上次坐标.横向坐标) 连通成功 假 .如果真结束 .变量循环尾 () ' 判断当前坐标的纵向坐标到循环变量是
12、否能够连通 ' 即判断 坐标(当前坐标.横向坐标,当前坐标.纵向坐标) 与 坐标(当前坐标.横向坐标,循环变量) 是否能够连通 .变量循环首 (循环变量, 当前坐标.横向坐标, 选择 (循环变量 当前坐标.横向坐标, -1, 1), 横向循环 2) .如果真 (_数据数组 当前坐标.纵向坐标 横向循环 2.数据内容 0 且 横向循环 2 当前坐标.横向坐标) 连通成功 假 .如果真结束 .变量循环尾 () ' 判断两个坐标的横向坐标与纵向坐标为循环变量两点是否能够连通 ' 即判断 坐标(上次坐标.横向坐标,循环变量) 与 坐标(当前坐标.横向坐标,循环变量) 是否能够连
13、通 .变量循环首 (上次坐标.纵向坐标, 当前坐标.纵向坐标, 选择 (上次坐标.纵向坐标 当前坐标.纵向坐标, -1, 1), 临时纵向循环) .如果真 (_数据数组 临时纵向循环 循环变量.数据内容 0 且 临时纵向循环 上次坐标.纵向坐标 且 临时纵向循环 当前坐标.纵向坐标) 连通成功 假 .如果真结束 .变量循环尾 () ' 检测失败便执行下次循环 .如果真 (连通成功 假) 到循环尾 () .如果真结束 .如果真 (连通成功) .如果 (最优位置 0) 最优位置 循环变量 .否则 最优位置 选择 (取绝对值 (上次坐标.横向坐标 循环变量) 取绝对值 (当前坐标.横向坐标
14、循环变量) 取绝对值 (上次坐标.横向坐标 最优位置) 取绝对值 (当前坐标.横向坐标 最优位置), 循环变量, 最优位置) .如果结束 .如果真结束.计次循环尾 ().如果真 (最优位置 0) ' << 组织正确顺序的路径信息 >> ' 先加入初始节点坐标 加入成员 (连接路径, 上次坐标) .如果真 (上次坐标.纵向坐标 当前坐标.纵向坐标) ' 判断第二个节点坐标 .如果真 (取绝对值 (最优位置 上次坐标.横向坐标) 0) 临时坐标变量.纵向坐标 上次坐标.纵向坐标 临时坐标变量.横向坐标 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 ' 判断第三个节点坐标 .如果真 (取绝对值 (最优位置 当前坐标.横向坐标) 0) 临时坐标变量.纵向坐标 当前坐标.纵向坐标 临时坐标变量.横向坐标 最优位置 加入成员 (连接路径, 临时坐标变量) .如果真结束 .如果真结束 ' 最后加入结尾点坐标 加入成员 (连接路径, 当前坐标) 顺序路径坐标 连接路径 返回 (真).如果真结束返回 (假)>- 代码段结束 -<游戏调用素材:宝石图块合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室内装修安全合同协议2026年规定
- 2026年个人维修服务合同协议
- 2026年产品用户体验评估合同
- 2026年数码印刷服务合同
- 软件外包合同协议2026
- 2026年科技园区孵化合作合同协议
- 2026年在线视频广告合作合同
- 2026年书法兴趣班合同
- 2026年提单运输保险合同协议
- 2026年钢材销售返利合同
- 落地式钢管脚手架专项施工方案
- 2025年母子公司间投资合同范本
- 2026中央广播电视总台招聘参考笔试题库及答案解析
- 班玛县公安局招聘警务辅助人员考试重点题库及答案解析
- 2026年电厂运行副值岗位面试题及答案
- 家校沟通的技巧与途径定稿讲课讲稿
- 实验室质控考核管理
- 雨课堂学堂在线学堂云《明清词研究导论(江苏师大 )》单元测试考核答案
- 2025年度中国铁路沈阳局集团有限公司招聘高校毕业生3391人(二)(公共基础知识)测试题附答案解析
- 软件团队年终总结
- 安徽开放大学2025年秋《个人理财》平时作业答案期末考试答案
评论
0/150
提交评论