《连连看》的算法!

本文探讨了连连看游戏的连接算法,分为直线相连、一个折点和两个折点三种情况。介绍了如何验证两点间直线连接,以及通过搜索两点所在直线上的空点,判断是否存在符合条件的折点来实现连接。通过示例展示了算法的具体实现过程。
摘要由CSDN通过智能技术生成
  连连看所要求的是:
1:两个目标是相同的
2:两个目标之间连接线的折点不超过两个。(连接线由x轴和y轴的平行线组成) 那么分析一下连接的情况可以看到,一般分三种情况
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 是否都能直线相连 ,是则连接成立。(如果z1=z2也就是只有一个折点喽,对判断没影响)
那么程序算法上,这里先就理论进行一个试验
var mmap=new Array();
mmap[0]=new Array(0,0,0,0,0,0);
mmap[1]=new Array(0,1,2,8,1,0);
mmap[2]=new Array(0,5,5,4,3,0);
mmap[3]=new Array(0,4,6,7,3,0);
mmap[4]=new Array(0,8,2,6,7,0);
mmap[5]=new Arr
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值