javascript数组问题

javascript数组问题,javascript,Javascript,我已经用javascript编写了一个snake程序。。 问题是蛇的长度不会超过2个区块大小 <html> <head> <script type="text/javascript"> var matrix, body, dir, key, lastx, lasty, start, applex, appley, eat, hal; function node(x, y) { this.x = x; this.y = y; } fun

我已经用javascript编写了一个snake程序。。 问题是蛇的长度不会超过2个区块大小

<html>
<head>
<script type="text/javascript">

var matrix, body, dir, key, lastx, lasty, start, applex, appley, eat, hal;


function node(x, y) {
    this.x = x;
    this.y = y;
}


function draw() {
    var str;
    for (var i = 0; i < body.length; i++) {
        matrix[body[i].x * 50 + body[i].y].bgColor = "black";
    }

}


function halt() {
    hal = 1 - hal;
    if (hal == 0) automove();
}


function check_status() {
    if (start == 1 && hal == 0) {

        var ch;
        if (eat == 1) {
            do {
                ch = 0;
                applex = Math.round(49 * Math.random());
                appley = Math.round(49 * Math.random());
                for (var i = 0; i < body.length; i++)
                if (body[i].x == applex && body[i].x == appley) ch = 1;
            } while (ch == 1);


            matrix[applex * 50 + appley].bgColor = "blue";
            eat = 0;
        }



        lastx = body[body.length - 1].x;
        lasty = body[body.length - 1].y;
        for (var i = 1; i < body.length; i++) {
            body[i].x = body[i - 1].x;
            body[i].y = body[i - 1].y;
        }


        if (dir == 1)--body[0].x;
        else if (dir == -1)++body[0].x;
        else if (dir == 2)--body[0].y;
        else if (dir == -2)++body[0].y;

        if (body[0].x == -1 || body[0].x == 50 || body[0].y == 50 || body[0].y == -1) {
            alert("GAME OVER!!");
            start = 0;
        }


        for (var i = 1; i < body.length; i++) {
            if (body[0].x == body[i].x && body[0].y == body[i].y) {
                alert("GAME OVER!!");
                start = 0;
                i = 10000;
            }
        }


        if (body[0].x == applex && appley == body[0].y) {
            eat = 1;
            body[body.length] = new node(lastx, lasty);
        }
        matrix[lastx * 50 + lasty].bgColor = "white";
        draw();
    }
}



function automove() {
    if (start == 1 && hal == 0) {
        if (key != -dir) dir = key;
        check_status();
        window.setTimeout("automove()", 200);
    }
}


function init() {
    start = 1;
    var x = document.getElementById("mine");
    var str = "<table id='tab' align='center' height='500px' cellSpacing='0' cellPadding='0' width='500px' border='4' >";


    for (var i = 0; i < 50; i++) {
        str += "<tr>";
        for (var j = 0; j < 50; j++)
        str += "<td></td>";
        str += "</tr>";
    }
    str += "</table>";
    x.innerHTML = str;


    matrix = document.getElementsByTagName("td");
    body = new Array();
    body[0] = new node(0, 0);
    draw();
    dir = key = -1;

    eat = 1;
    v = 0;
    hal = 0;
    automove();
}


function keypress(e) {
    if ((e.keyCode == 38) || ((e.which) && (e.which == 38))) //up
    key = 1;
    else if ((e.keyCode == 40) || ((e.which) && (e.which == 40))) //down
    key = -1;
    else if ((e.keyCode == 37) || ((e.which) && (e.which == 37))) //left
    key = 2;
    else if ((e.keyCode == 39) || ((e.which) && (e.which == 39))) //right
    key = -2;
    check_status();
}

</script>
</head>
<body onkeydown=keypress(event)>
<br/>
<input type="button" onClick="init()" value="play">
<input type="button" onClick="halt()" value="pause">
<p id="mine"></p>
<br><h5 id="score"></h5>
</body>
</html>

变量矩阵、主体、目录、键、lastx、lasty、start、applex、appley、eat、hal;
功能节点(x,y){
这个.x=x;
这个。y=y;
}
函数绘图(){
var-str;
对于(变量i=0;i


问题在于:

lastx=body[body.length-1].x;
lasty=body[body.length-1].y;
for(var i=1;i<body.length;i++)
{
    body[i].x=body[i-1].x;
    body[i].y=body[i-1].y;
}

我不想破译它。请你能缩进它吗(+每行前4个空格)?你应该在写代码的时候开始在代码中添加注释。像这样的代码(涉及大量数学知识)很快就会变得令人困惑,甚至对其原始作者来说也是如此。救命啊!在我困的时候做这个节目。杀了我,因为我犯了这个愚蠢的错误!!
body.unshift(body[0]);