下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、连连看消除算法说明:本算法为个人意愿,意在实现功能,并非最优,便于大家理解连连看游戏的实质。 游戏规则:连连看游戏的消除规则玩过了应该挺容易理解,就是两点之间只能用水平或者竖直线段连接,最多不能超过2个拐点。所以分成了4种情况,1、 直接相连 3、 Z型相连2、 转一次弯相连 4、 U型相连下面开始提出一种直观的算法:我们来判断两个物体能否消除。1、 我们从一个物体出发,沿十字向外搜集直接相连点,遇到其他物体就终止当前方向搜索。对两个待判断的物体都进行十字点收集。2、 我们定义一下直接相连:两个点处于水平或者竖直位置,并且中间没有任何其他物体阻挡。A、如果是处于消除情况1(直接相连)的情况,那
2、么第二个点应该在第一个的十字搜集点上(直接连)B、如果是处于消除情况2(转一次弯)的情况,那么物体1十字线上的某点肯定能够和2直接相连C、如果是处于消除情况3或者4,那么物体1十字线上的某点肯定能够和物体2十字线上的某点直接相连D、边界问题我们单独考虑,有的游戏规则中可以边界外走线,有的则不可以,这个对我们算法没有影响。所以整个程序实现就简单了,伪代码:函数A,判断两点是否可以直接消除函数B,收集指定点十字方向全部直接相连点如果两点可直连则可消除遍历2的直连点如果点1和点2十字中某点可直连则可消除 遍历1,2的直连点如果有可直连点则可消除给出一个没完成的python代码供参考:'
3、9;'Description:link link game auto solver algorithm.Author:winxosDate:2011-05-18'''import randomsize=10m=0 for x in range(size) for y in range(size)defcreatemap():defcreatepos():return random.randint(0, size-1), random.randint(0, size-1)deffillpair(n):a=createpos()while ma0a1!=0:a=cr
4、eatepos()b=createpos()while mb0b1!=0 or b=a:b=createpos()ma0a1=nmb0b1=nfor i in range(20):fillpair(random.randint(1, 9)passdefisdirectlink(a, b):#a,b is point#return 1 means can link directlyif a0=b0 and a1=b1: #same point return false return 0if a0=b0: #Verticalif a0=0 or a0=size-1: #bound is linka
5、blereturn 1sa=a1sb=b1ifsb<sa: #field from sa to sb, sa<sbsa=b1sb=a1for i in range(sa+1, sb-1):if ma0i!=0:return 0return 1if a1=b1: #Horizonif a1=0 or a1=size-1: #bound is linkablereturn 1sa=a0sb=b0ifsb<sa: #field from sa to sb, sa<sbsa=b0sb=a0for i in range(sa+1, sb-1):if mia1!=0:return
6、0return 1passreturn 0defonelinepoint(a): #return the cross directly linkable points. r=i=a0-1while mia1=0 and i>0:r.append(i, a1)i-=1i=a0+1while mia1=0 and i<size:r.append(i, a1)i+=1j=a1-1while ma0j=0 and j>0:r.append(a0, j)j-=1j=a1+1while ma0j=0 and j<size:r.append(a0, j)j+=1return rdefislinkable(a, b): #core function ifisdirectlink(a, b):return 1sa=onelinepoint(a)sb=onelinepoint(b)for x in sa:ifisdirectlink(x, b):return 2for x in sb:ifisdirectlink(a, x):return 2for x in sa:for y in sb:ifisdirectlink(x, y):return 3return 0defprt(n):print(&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年儿童口腔检查教案
- 【2025年】档案保护考试题及答案
- 2026年教师招聘考试(小学数学)考试卷及答案
- 2026年山西省河津市高三生物下册期末考试模拟试卷(含答案)
- 2026年黑龙江省海伦市高一化学上册期末考试模拟检测卷附完整答案(易错题)
- 2026年青海省德令哈市高三生物下册期末考试模拟试卷带答案
- 2026年青海省德令哈市高三生物上册期末考试测试卷及答案
- 2026年吉林省临江市高一化学上册期末考试模拟卷标准卷附答案
- 2026年河南省辉县市高三生物下册期末考试模拟卷及答案
- 2026年甘肃省临夏市高三物理下册期末考试模拟卷及答案
- 2026年绍兴市原水集团有限公司人员招聘笔试参考试题及答案详解
- 第八版内科冠心病课件讲课教案
- 2026年第三季度典型事故案例警示教育
- 第一次月考试卷(1~2单元)(含答案)-2026-2027学年人教版数学三年级上册
- T/CAPA 16-2025医疗美容从业人员执业规范
- 《人工智能技术与应用》课件 项目9 人工智能训练
- 大体积混凝土浇筑施工应急预案
- 四上《习作:我的心儿怦怦跳》课件
- 2026年秋季开学教师防欺凌治理培训课件
- 安全风险辨识评估作业指导书
- 2026年新编军事理论考试题及答案
评论
0/150
提交评论