首页 软件 购物 网址 万年历 阅读 | 天天财汇 | 开发教程 头条阅读
图片批量下载器 M3U8下载器 网页批量下载器 图片自动播放器 淘宝下载 屏幕截图器 网页截图器 超级按键
喔哦浏览器 一键清理系统垃圾 天天百宝箱 布谷鸟定时关机 豆豆文本编辑器 木马查杀 显示器测试 好听音乐
TxT小说阅读器 快马文件互传 小说家小说写作助手 FoxFile文件管理器 千寻小说下载 高山文件备份 网速测试 文字转语音大师
股价下载分析器 离线地图下载器 多播视频 漫多多 品妙游戏 打豆豆 俄罗斯方块 果蔬连连看 宠物连连看 美女连连看 五子棋 订制软件
推荐分类: 软件公告 | 焦点关注 | 天天财汇 |
  当前位置: 首页 > 软件公告 > 技术专区 > 关于《连连看》的算法 > 正文显示
  百分百防木马的网页浏览器 网虫浏览器
 翻页: [1]   共1/1页
第1楼: 关于《连连看》的算法  
   作者: 匿名   发表时间: 2008/5/3 23:44:51   主页:   IP: 保密
连连看所要求的是:

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 Array(0,0,0,0,0,0);

p1=new Array(1,4);

p2=new Array(1,2);

//定义一个二维数组作为游戏的映像,相同的数字代表相同的图标,0是空处,p1,p2是选择的点 linelink=function(o1,o2){

var t=new Array(0,0);

if(o1[0]==o2[0] || o1[1]==o2[1]){

if(Math.abs(o1[0]-o2[0])+Math.abs(o1[1]-o2[1])<=1){

return true;

}else{

t[0]=isNaN((o2[0]-o1[0])/Math.abs(o2[0]-o1[0])) ? o1[0] : o1[0]+((o2[0]-o1[0])/Math.abs(o2[0]-o1[0]));

t[1]=isNaN((o2[1]-o1[1])/Math.abs(o2[1]-o1[1])) ? o1[1] : o1[1]+((o2[1]-o1[1])/Math.abs(o2[1]-o1[1]));

return mmap[t[0]][t[1]]==0 ? linelink(t,o2) : false

}

}else{

return false;

}

}

// 上面这个函数是判断任意两个点是否能直线连接(中间的点全为0) var parr=new Array();

pickpoint=function(q1,q2){

var j;

parr.splice(0);

for(j=0;j<mmap[q1[0]].length;j++){

parr=mmap[q1[0]][j]==0?parr.concat([[q1[0],j]]):parr; }

for(j=0;j<mmap[q2[0]].length;j++){

parr=mmap[q2[0]][j]==0?parr.concat([[q2[0],j]]):parr; }

for(j=0;j<mmap.length;j++){

parr=mmap[j][q1[1]]==0?parr.concat([[j,q1[1]]]):parr; }

for(j=0;j<mmap.length;j++){

parr=mmap[j][q2[1]]==0?parr.concat([[j,q2[1]]]):parr; }

}

//上面这个函数是取出两个点的x和y直线方向上的所有空点保存进parr这个数组里面待搜索 islink=function(p1,p2){

var i,j

if(p1==p2){

return false;

}

if(mmap[p1[0]][p1[1]]<>mmap[p2[0]][p2[1]]){

return false;

}

if(linelink(p1,p2)){

return true;

}else{

for(i=0;i<parr.length;i++){

for(j=0;j<parr.length;j++){

if(linelink(p1,parr[i]) && linelink(p2,parr[j]) && linelink(parr[i],parr[j])) {

trace(parr[i]+"->"+parr[j]);

return true;}

}

} }

return false;

}

//上面这个函数是校验两个目标点是否相连,

//先判断是否同类点,再判断是否直线相连,最后搜索parr里的每对折点是否使目标点相连 pickpoint(p1,p2); //取得parr数组

trace(islink(p1,p2)); //测试p1,p2是否相连 嘿,运行试试?
相关贴图:

 

 翻页: [1]   共1/1页



   若有疑问请联系我们

  ※软件公告※
图片批量下载器
获首届软件创新大赛优秀奖
电脑教育报
专访TxT小说阅读器
软件相关
·软件公告
·图片批量下载器
·超级按键
·网虫浏览器
·一键清除系统垃圾
·TxT小说阅读器
·热门小说推荐
·小说下载器
·网页截图器
·木马祼奔
·天天百宝箱
·显示器测试
·图片管理器
·好听音乐盒
·连连看游戏系列
资讯相关
·焦点关注
·在线游戏
·娱乐八卦
·经济论坛
·体育世界
·健康知识
·每日一笑
·技术专区
·特别推荐
·随便贴贴
三石聚峰
Intel软件合作伙伴
·几张很黄很黄的图片
·预测你的未来潜能

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 12:47:17-

 网站联系 2006-2024 三石聚峰 WWW.3FWork.COM 蜀ICP备06016416号