欢迎光临

木子屋

标题: Js版连连看V1.0

作者: dnawo

日期: 2008-12-15 04:28 PM

分类: 脚本语言

内容: 复制内容到剪贴板 程序代码<html>
<head>
<style type="text/css">
input {width:22px;height:22px;}
</style>
</head>
<body>
<script type="text/javascript">
//Cody by:dnawo
var rows = 8;//行
var cols = 8;//列
var type = 4;//种类
var arrPoint = [];//全部坐标点
var selPoint = [null,null];//选中坐标
var count = 0;//已选中的点总数
//生成随机数
var rnd = [];
for(var i=1;i<=(rows-2)*(cols-2)/2;i++)
{
var r = parseInt(Math.random()*type+1);
rnd[rnd.length]=rnd[rnd.length+1]=r;
}
//生成界面
for(var i=0;i<rows;i++)
{
arrPoint[i] = [];
for(var j=0;j<cols;j++)
{
var o = document.createElement("input");
//最外一层不显示
if(i>0 && i<rows-1 && j>0 && j<cols-1)
{
var k = parseInt(Math.random()*rnd.length);
var value = rnd[k];
rnd.splice(k,1);

o.type = "button";
o.setAttribute("value",value);
o.setAttribute("v",value);
o.setAttribute("onclick",function(){savePoint(this);});
}
else
{
o.type = "hidden";
o.setAttribute("value","");
o.setAttribute("v",null);
}
o.setAttribute("x",i);
o.setAttribute("y",j);
arrPoint[i][j] = o;
document.body.appendChild(arrPoint[i][j]);
}
document.write("<br/>");
}
//存储选择对象
function savePoint(o)
{
if(o.v != null)
{
if(selPoint[0]!=null && selPoint[1]!=null)
{
selPoint[0] = null;
selPoint[1] = null;
}

if(selPoint[0] == null)
{
selPoint[0] = o;
}
else
{
//选择同一个对象，本次选择取消
if(selPoint[0] == o)
{
selPoint[0] = null;
selPoint[1] = null;
}
else
{
selPoint[1] = o;
//值相同则进行连线
if(selPoint[0].v == selPoint[1].v)
{
if(!isLine(selPoint[0],selPoint[1]))
{
var arrTmp1=[],arrTmp2=[];

if(selPoint[0].x != selPoint[1].x)
{
//selPoint[0]横左
for(var i=selPoint[0].y-1;i>=0;i--){if(arrPoint[selPoint[0].x][i].v == null){arrTmp1[arrTmp1.length]=arrPoint[selPoint[0].x][i]}else{break;}};
//selPoint[0]横右
for(var i=selPoint[0].y+1;i<cols;i++){if(arrPoint[selPoint[0].x][i].v == null){arrTmp1[arrTmp1.length]=arrPoint[selPoint[0].x][i]}else{break;}};
//一折
arrTmp1[arrTmp1.length] = arrPoint[selPoint[0].x][selPoint[0].y];
//selPoint[1]横左
for(var i=selPoint[1].y-1;i>=0;i--){if(arrPoint[selPoint[1].x][i].v == null){arrTmp2[arrTmp2.length]=arrPoint[selPoint[1].x][i]}else{break;}};
//selPoint[1]横右
for(var i=selPoint[1].y+1;i<cols;i++){if(arrPoint[selPoint[1].x][i].v == null){arrTmp2[arrTmp2.length]=arrPoint[selPoint[1].x][i]}else{break;}};
//一折
arrTmp2[arrTmp2.length] = arrPoint[selPoint[1].x][selPoint[1].y];
for(var i=0;i<arrTmp1.length;i++)
{
for(var j=0;j<arrTmp2.length;j++)
{
if(arrTmp1[i].y == arrTmp2[j].y)
{
//连线
if(isLine(arrTmp1[i],arrTmp2[j]))
{
selPoint[0].value = "";
selPoint[0].v = null;
selPoint[1].value = "";
selPoint[1].v = null;
count +=2;
if(count == (rows-2)*(cols-2))
{
alert("恭喜你，过关了！");
}
return;
}
}
}
}
}

arrTmp1=[];arrTmp2=[];

if(selPoint[0].y != selPoint[1].y)
{
//selPoint[0]竖上
for(var i=selPoint[0].x-1;i>=0;i--){if(arrPoint[i][selPoint[0].y].v == null){arrTmp1[arrTmp1.length]=arrPoint[i][selPoint[0].y]}else{break;}};
//selPoint[0]竖下
for(var i=selPoint[0].x+1;i<rows;i++){if(arrPoint[i][selPoint[0].y].v == null){arrTmp1[arrTmp1.length]=arrPoint[i][selPoint[0].y]}else{break;}};
//一折
arrTmp1[arrTmp1.length] = arrPoint[selPoint[0].x][selPoint[0].y];
//selPoint[1]竖上
for(var i=selPoint[1].x-1;i>=0;i--){if(arrPoint[i][selPoint[1].y].v == null){arrTmp2[arrTmp2.length]=arrPoint[i][selPoint[1].y]}else{break;}};
//selPoint[1]竖下
for(var i=selPoint[1].x+1;i<rows;i++){if(arrPoint[i][selPoint[1].y].v == null){arrTmp2[arrTmp2.length]=arrPoint[i][selPoint[1].y]}else{break;}};
//一折
arrTmp2[arrTmp2.length] = arrPoint[selPoint[1].x][selPoint[1].y];
for(var i=0;i<arrTmp1.length;i++)
{
for(var j=0;j<arrTmp2.length;j++)
{
if(arrTmp1[i].x == arrTmp2[j].x)
{
//连线
if(isLine(arrTmp1[i],arrTmp2[j]))
{
selPoint[0].value = "";
selPoint[0].v = null;
selPoint[1].value = "";
selPoint[1].v = null;
count +=2;
if(count == (rows-2)*(cols-2))
{
alert("恭喜你，过关了！");
}
return;
}
}
}
}
}
}
else
{
selPoint[0].value = "";
selPoint[0].v = null;
selPoint[1].value = "";
selPoint[1].v = null;
count +=2;
if(count == (rows-2)*(cols-2))
{
alert("恭喜你，过关了！");
}
return;
}
}
}
}
}
}
//判断是否可直线相连
function isLine(p1,p2)
{
var tmpPoint = null;

//水平搜索
if(p1.x == p2.x)
{
tmpPoint = p1;
if(tmpPoint.y>p2.y)
{
p1 = p2;
p2 = tmpPoint;
}

for(var i=p1.y+1;i<p2.y;i++)
{
if(arrPoint[p1.x][i].v != null)return false;
}
return true;
}
//垂直搜索
else if(p1.y == p2.y)
{
tmpPoint = p1;
if(tmpPoint.x>p2.x)
{
p1 = p2;
p2 = tmpPoint;
}

for(var i=p1.x+1;i<p2.x;i++)
{
if(arrPoint[i][p1.y].v != null)return false;
}
return true;
}
else
{
return false;
}
}
</script>
</body>
</html>

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.438 ms

返回

标题: Js版连连看V1.0

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.438 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.469 ms

返回