不废话  先上代码<script type="text/javascript">
alert("因为未设定按键属性,所以请勿点击除上下左右外的其他按键,以防出错!");
function $(x){return(document.getElementById(x));}
var ln=new Array();
var rndx=0;
var rndy=0;
var prndx=0;
var prndy=0;
var total=3;
window.onload=function()
{
var show=$("show");
for(x=1;x<11;x++)
{
for(y=1;y<17;y++)
{
var nd=document.createElement("div");
nd.className="A-1";
nd.X=x;
nd.Y=y;
nd.id=String(x)+y;
show.appendChild(nd);
}
}
try
{
for(i=0;i<total;i++)
{
ln[i]=document.createElement("stuff");
ln[i].X=0;
ln[i].Y=0;
}
ln[0].X=1;
ln[0].Y=3;
ln[1].X=1;
ln[1].Y=2;
ln[2].X=1;
ln[2].Y=1;
for(i=0;i<total;i++)
{
var nd=$(String(ln[i].X)+ln[i].Y);
nd.style.background="#FF0000";
}
}catch(e)
{
alert("这里有错误!");
}
rnd();
document.onkeyup =kbpress;
}
function kbpress()
{
var keycode=event.which||event.keyCode;
var nnd=$(String(ln[total-1].X)+ln[total-1].Y);
var plnx=new Array();
var plny=new Array();
for(i=0;i<total-1;i++)
{
plnx[i]=ln[i].X;
plny[i]=ln[i].Y;
}
for(i=0;i<total-1;i++)
{
ln[i+1].X=plnx[i];
ln[i+1].Y=plny[i];
} //交换蛇的位置
var x=ln[0].X;
var y=ln[0].Y;
switch(keycode)
{
case 37:
if(y==1)
{
alert("您撞墙上了,失败啊!");
window.close();
}
else
{
for(i=1;i<total;i++)
{
if(ln[i].X==x)
{
if(ln[i].Y==(y-1))
{
alert("您碰撞到了自己,游戏结束!");
window.close();
}
}
}
ln[0].Y=(y-1);
y=ln[0].Y;
}
break;<!--******************left********************* -->
case 38:
if(x==1)
{
alert("您撞墙上了,失败啊!");
window.close();
}
else
{
for(i=1;i<total;i++)
{
if(ln[i].Y==y)
{
if(ln[i].X==(x-1))
{
alert("您碰撞到了自己,游戏结束!");
window.close();
}
}
}
ln[0].X=(x-1);
x=ln[0].X;
}
break;<!--******************up********************* -->
case 39:
if(y==16)
{
alert("您撞墙上了,失败啊!");
window.close();
}
else
{
for(i=1;i<total;i++)
{
if(ln[i].X==x)
{
if(ln[i].Y==(y+1))
{
alert("您碰撞到了自己,游戏结束!");
window.close();
}
}
}
ln[0].Y=(y+1);
y=ln[0].Y;
}
break;<!--******************right********************* -->
case 40:
if(x==10)
{
alert("您撞墙上了,失败啊!");
window.close();
}
else
{
for(i=1;i<total;i++)
{
if(ln[i].Y==y)
{
if(ln[i].X==(x+1))
{
alert("您碰撞到了自己,游戏结束!");
window.close();
}
}
}
ln[0].X=(x+1);
x=ln[0].X;
}
break;<!--******************down********************* -->
default :
break;
} //判断是否违例
for(i=0;i<total;i++)
{
nd=$(String(ln[i].X)+ln[i].Y);
nd.style.background="#FF0000";
}
nnd.style.background="#CCCCCC";
///这里有错!↓↓↓↓
if(ln[0].X==rndx && ln[0].Y=rndy)
{
prndx=rndx;
prndy=rndy;
rnd();
}
if(ln[total-1].X==prndx && ln[total-1].Y==prndy)
{
ln[total]=document.createElement("stuff");
ln[total].X=prndx;
ln[total].Y=prndy;
total++;
}
/////这里有错!↑↑↑↑
}
function rnd()
{
rndx=Math.ceil(Math.random()*10);
rndy=Math.ceil(Math.random()*16);
var rndshow=$(String(rndx)+rndy);
rndshow.style.background="#669900";
}
</script>
<style>
*{ margin:0px; padding:0px; border:0px;}
.A-1{ 
width:50px; 
height:50px; 
background:#CCCCCC; 
border-bottom:#666666 2px solid;
border-right:#666666 2px solid;
border-left:#FFFFFF 2px solid;
border-top:#FFFFFF 2px solid;
float:left;
color:#CCCCCC;
font-family:"黑体";
font-size:13px;
display:inline;
}
</style>
<body bgcolor="#669900">
<div style="width:100%; height:100%;text-align:center;">
<div id="show" style="width:804px; height:500px;margin:0 auto; border:2px #000000 solid;"></div>
</div>
</body>///这里有错!↓↓↓↓
if(ln[0].X==rndx && ln[0].Y=rndy)
{
prndx=rndx;
prndy=rndy;
rnd();
}
if(ln[total-1].X==prndx && ln[total-1].Y==prndy)
{
ln[total]=document.createElement("stuff");
ln[total].X=prndx;
ln[total].Y=prndy;
total++;
}
/////这里有错!↑↑↑↑
这句话删掉  可以运行 
大家可以看看效果
这个是判断对应空格是否被吃掉  吃掉生成新的点位 同时在尾巴经过后加在尾巴后
不知道哪里有问题
还有就是  请在IE下 查看效果
没做FF
高手看看 帮帮忙

解决方案 »

  1.   

    没有啊 
      设置的total一直都是大于0的
      

  2.   


    if(ln[0].X==rndx && ln[0].Y=rndy);//这个地方错了,少了一个“=”号if(ln[0].X==rndx && ln[0].Y==rndy);
      

  3.   

    刚才把代码调试了下  还行
    把代码发下:<script type="text/javascript">
    alert("因为未设定按键属性,所以请勿点击除上下左右外的其他按键,以防出错!");
    function $(x){return(document.getElementById(x));}
    var ln=new Array();
    var rndx=0;
    var rndy=0;
    var prndx=0;
    var prndy=0;
    var total=3;
    var status=0;
    window.onload=function()
    {
    var show=$("show");
    for(x=1;x<11;x++)
    {
    for(y=1;y<17;y++)
    {
    var nd=document.createElement("div");
    nd.className="A-1";
    nd.X=x;
    nd.Y=y;
    nd.id=String(x)+y;
    show.appendChild(nd);
    }
    }
    try
    {
    for(i=0;i<total;i++)
    {
    ln[i]=document.createElement("div");
    ln[i].X=0;
    ln[i].Y=0;
    }
    ln[0].X=1;
    ln[0].Y=3;
    ln[1].X=1;
    ln[1].Y=2;
    ln[2].X=1;
    ln[2].Y=1;
    for(i=0;i<total;i++)
    {
    var nd=$(String(ln[i].X)+ln[i].Y);
    nd.style.background="#FF0000";
    }
    }catch(e)
    {
    alert("这里有错误!");
    }
    rnd();
    document.onkeyup =kbpress;
    }
    function kbpress()
    {
    var keycode=event.which||event.keyCode;
    var nnd=$(String(ln[total-1].X)+ln[total-1].Y);
    var plnx=new Array();
    var plny=new Array();
    for(i=0;i<total-1;i++)
    {
    plnx[i]=ln[i].X;
    plny[i]=ln[i].Y;
    }
    for(i=0;i<total-1;i++)
    {
    ln[i+1].X=plnx[i];
    ln[i+1].Y=plny[i];
    }
    if(status==1)
    {
    ln[total]=document.createElement("div");
    ln[total].X=prndx;
    ln[total].Y=prndy;
    prndx=0;
    prndy=0;
    total++;
    status=0;
    } //交换蛇的位置
    var x=ln[0].X;
    var y=ln[0].Y;
    switch(keycode)
    {
    case 37:
    if(y==1)
    {
    alert("您撞墙上了,失败啊!");
    window.close();
    }
    else
    {
    for(i=1;i<total;i++)
    {
    if(ln[i].X==x)
    {
    if(ln[i].Y==(y-1))
    {
    alert("您碰撞到了自己,游戏结束!");
    window.close();
    }
    }
    }
    ln[0].Y=(y-1);
    y=ln[0].Y;
    }
    break;<!--******************left********************* -->
    case 38:
    if(x==1)
    {
    alert("您撞墙上了,失败啊!");
    window.close();
    }
    else
    {
    for(i=1;i<total;i++)
    {
    if(ln[i].Y==y)
    {
    if(ln[i].X==(x-1))
    {
    alert("您碰撞到了自己,游戏结束!");
    window.close();
    }
    }
    }
    ln[0].X=(x-1);
    x=ln[0].X;
    }
    break;<!--******************up********************* -->
    case 39:
    if(y==16)
    {
    alert("您撞墙上了,失败啊!");
    window.close();
    }
    else
    {
    for(i=1;i<total;i++)
    {
    if(ln[i].X==x)
    {
    if(ln[i].Y==(y+1))
    {
    alert("您碰撞到了自己,游戏结束!");
    window.close();
    }
    }
    }
    ln[0].Y=(y+1);
    y=ln[0].Y;
    }
    break;<!--******************right********************* -->
    case 40:
    if(x==10)
    {
    alert("您撞墙上了,失败啊!");
    window.close();
    }
    else
    {
    for(i=1;i<total;i++)
    {
    if(ln[i].Y==y)
    {
    if(ln[i].X==(x+1))
    {
    alert("您碰撞到了自己,游戏结束!");
    window.close();
    }
    }
    }
    ln[0].X=(x+1);
    x=ln[0].X;
    }
    break;<!--******************down********************* -->
    default :
    break;
    } //判断是否违例
    for(i=0;i<total;i++)
    {
    nd=$(String(ln[i].X)+ln[i].Y);
    nd.style.background="#FF0000";
    }
    nnd.style.background="#CCCCCC";

    if(ln[0].X==rndx && ln[0].Y==rndy)
    {
    prndx=rndx;
    prndy=rndy;
    rnd();
    }
    if(ln[total-1].X==prndx && ln[total-1].Y==prndy)
    {
    status=1;
    }
    }
    function rnd()
    {
    rndx=Math.ceil(Math.random()*10);
    rndy=Math.ceil(Math.random()*16);
    var rndshow=$(String(rndx)+rndy);
    rndshow.style.background="#669900";
    }
    </script>
    <style>
    *{ margin:0px; padding:0px; border:0px;}
    .A-1{ 
    width:50px; 
    height:50px; 
    background:#CCCCCC; 
    border-bottom:#666666 2px solid;
    border-right:#666666 2px solid;
    border-left:#FFFFFF 2px solid;
    border-top:#FFFFFF 2px solid;
    float:left;
    color:#CCCCCC;
    font-family:"黑体";
    font-size:13px;
    display:inline;
    }
    </style>
    <body bgcolor="#669900">
    <div style="width:100%; height:100%;text-align:center;">
    <div id="show" style="width:804px; height:500px;margin:0 auto; border:2px #000000 solid;"></div>
    </div>
    </body>给新手看看 
    老鸟指正下 不足
    貌似很繁琐。。