JS贪吃蛇V4

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var a = new Array();

    //N为格子边长
    N = 10;
    curI = 0;
    curJ = 0;

    //障碍物测试,可转食物
    boomIJ = 100;
    var curTd;
    var curIJ = 2;

    var body = new Array();

    function move1(curI, curJ) {
        
        //alert(curI+" "+curJ+" "+boomIJ)
        //上版这里触雷游戏结束
        //         if (curI * N + curJ == boomIJ) {
        //             alert("game over!");
        //             return;
        //         }

        //此版改为吃到食物身体加长且先进行判断
        if (curI * N + curJ == boomIJ) {
            //扩充身子的位置
            body.push(boomIJ)
            //return;
        }
        

        //将蛇尾颜色置空
        document.getElementById("td" + (body[body.length - 1] + 1)).style.background = "";

        for (var i = body.length - 1; i >= 0; i--) {
            //身子存的是位置
            body[i] = body[i - 1];
        }

        body[0] = curI * N + curJ;

        //重构身子
        for (var i = 0; i < body.length; i++) {
            var idNum = body[i] + 1;
            curTd = document.getElementById(("td" + idNum));
            curTd.style.background = "green";
        }

        

    }

    function init() {

        //初始化活动场地
        for (var i = 0; i < N; i++) {
            a[i] = new Array();
            for (var j = 0; j < N; j++) {
                a[i][j] = 0;
            }
        }

        var table = document.getElementById("table1");
        var n = N;
        for (var i = 0; i < n; i++) {
            var tr = document.createElement("tr");
            for (var j = 0; j < n; j++) {
                var td = document.createElement("td");
                td.setAttribute("id", "td" + (i * n + j + 1));
                td.addEventListener("click", function() {
                    check(this);
                });

                td.style.background = "";
                td.innerHTML = "" + (i * n + j + 1);
                tr.appendChild(td);
            }
            table.appendChild(tr);
        }

        //         var num = Math.floor(Math.random() * 9) + 1;
        //         var idNum = "td" + num;
        //         curTd = document.getElementById(idNum);

        var idNum = "td" + (curIJ + 1);
        curTd = document.getElementById(idNum);

        curTd.style.background = "green";
        curI = parseInt(curIJ / N);
        curJ = parseInt(curIJ % N);

        body.push(2);
        body.push(1);
        body.push(0);

        for (var i = body.length - 1; i >= 0; i--) {
            var tdnum = "td" + (body[i] + 1);
            //alert(document.getElementById(tdnum).innerHTML);
            document.getElementById(tdnum).style.background = "green";
        }

    }

    function check(td) {
        //boomIJ=parseInt(td.parentElement.rowIndex)*N+parseInt(td.cellIndex));
        i = parseInt(td.parentElement.rowIndex);
        j = parseInt(td.cellIndex);
        boomIJ = i * N + j;
        td.style.background = "red";
        //alert(boomIJ);
    }

    function turn(event) {
        var e = event;//|| window.event || arguments.callee.caller.arguments[0];

        //alert(e.keyCode);
        if (e && e.keyCode == 38) {
            if (curI - 1 >= 0) {
                curI = curI - 1;
                move1(curI, curJ);
            }
            //alert('38=上键');

        }

        if (e.keyCode == 39) {
            //             alert('39=右键');

            if (curJ + 1 < N) {
                curJ = curJ + 1;

                move1(curI, curJ);
            }

        }

        if (e.keyCode == 37) {
            //alert('37=左键');
            if (curJ - 1 >= 0) {
                curJ = curJ - 1;

                move1(curI, curJ);
            }
        }

        if (e && e.keyCode == 40) {
            //alert('40=下键');
            if (curI + 1 < N) {
                curI = curI + 1;

                move1(curI, curJ);
            }

        }

    }

    window.onload = init;
</script>
</head>
<body οnkeydοwn="turn(event)">

    <table id="table1" style="width: 50%; height: 300px;" border="1">

    </table>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值