贪吃蛇

Greedy Bear

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title>Greedy Bear</title>
        <style type="text/css">
        tb{background-color:#fff;}
        .head{background-color:Red;}
        .tail{background-color:Black;}
        .fish{background-color:Green;}
        </style>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
        <script type="text/javascript">
            var height = 10;
            var width = 10;
            var length = 1;
            var tail = [];
            var speed = 1000;
            var direction = "right";
            var timerID;
            $(document).ready(function () {
                //初始化游戏界面 
                $(this).find("body").append("<table border='0' cellspacing='1px' cellpadding='2px' bgcolor='#e0e0e0'></table>");
                for (var i = 0; i < height; i++) {
                    $(this).find("table").append("<tr height='20'></tr>");
                    for (var j = 0; j < width; j++) {
                    //给每行,划分若干个单元格
                        $(this).find("table tr").last().append("<td id='td_" + i + "_" + j + "' width='20'></td>");
                    }
                }
                //设置蛇开始的位置。
                $(this).find("td").first().addClass("head");
                //初始化一条鱼
                setFish();
                //每个多少时间调用一下Move
                timerID = window.setInterval(move, speed);
                //响应键盘事件
                $(this).keydown(function (event) {
                    if (event.which == 37) {
                        direction = "left";
                    }
                    else if (event.which == 38) {
                        direction = "up";
                    }
                    else if (event.which == 39) {
                        direction = "right";
                    }
                    else if (event.which == 40) {
                        direction = "down";
                    }
                    else {
                        return;
                    }
                    //防止点一次键盘,时间缩短一些。
                    window.clearInterval(timerID);
                    //重新设置间隔
                    if (move()) {
                        timerID=window.setInterval(move, speed);
                    }
                });

            });

            function move() {
                //找到舌头
                var headEle = $("td[className='head']");

                var headId = headEle.attr("id");
                if (typeof headId == 'undefined') {
                    window.clearInterval(timerID);
                    return false;
                }
                var att = headId.split("_");


                var nextHead, nextId;
                //计算蛇下一个位置
                if (direction == "right") {
                    nextId = "td_" + att[1] + "_" + (parseInt(att[2]) + 1);
                }
                else if (direction == "left") {
                    nextId = "td_" + att[1] + "_" + (parseInt(att[2]) - 1);
                }
                else if (direction == "up") {
                    nextId = "td_" + (parseInt(att[1]) - 1) + "_" + att[2];
                }
                else if (direction == "down") {
                    nextId = "td_" + (parseInt(att[1]) + 1) + "_" + att[2];
                }

                nextHead = $("#" + nextId);
                if (typeof nextHead.attr("id") == 'undefined') {
                    window.clearInterval(timerID);
                    alert("fail");
                    return false;
                }
                //头变成尾巴。蛇每移动一下,tail数组就会增加一个。
                headEle.addClass("tail");
                tail[tail.length] = headEle;
                //遇到鱼的时候,tail数组就不减去刚刚增加的。
                if (nextHead.hasClass("fish")) {
                    nextHead.removeClass("fish");
                    length++;
                    setFish();
                }
                else {
                    //减去刚刚增加的鱼
                    tail[0].removeClass("tail");
                    tail = tail.slice(1);
                }
            
                //headEle.addClass("tail");
                nextHead.addClass("head");
                headEle.removeClass("head");
                return true;
            }

            function setFish() {
                var x = Math.floor(Math.random()*height);
                var y = Math.floor(Math.random()*width);
                $("#td_"+x+"_"+y).addClass("fish");
            }

        </script>
	</head>
	<body>
	
	</body>
</html>

原文地址:https://www.cnblogs.com/363546828/p/2866010.html