• html5+css3+js实现贪吃蛇游戏功能


    View Code
    <!DOCTYPE html>
    <!-- 
        begin   : 20130506
        author  : Spider (利用js做数组练习) 
        end     : 20130508
    -->
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>JS练习贪吃蛇游戏</title>
        <style type="text/css">
            *
            {
                margin: 0px;
                padding: 0px;
            }
    
            #box
            {
                width: 360px;
                height: 360px;
                border: 1px solid #000;
                background-image:url("bg.jpg");
            }
    
            .di
            {
                width: 10px;
                height: 10px;
                border: 1px solid rgba(255, 255, 255, 0.00);
                float: left;
            }
    
            .she
            {
                width: 10px;
                height: 10px;
                border: 1px solid #60ff00;
                float: left;
                border-radius: 25px;
            }
    
            .chi
            {
                width: 10px;
                height: 10px;
                border: 1px solid #ff0000;
                float: left;
            }
    
            .qiang
            {
                width: 10px;
                height: 10px;
                border: 1px solid #0026ff;
                float: left;
            }
    
            .one
            {
                width: 10px;
                height: 10px;
                border: 1px solid #60ff00;
                border-radius: 25px;
                background-color:#60ff00;
                float: left;
            }
    
            .btn
            {
                display:none;
            }
        </style>
        <script type="text/javascript">
            //快捷获取DOM
            function A(id) {
                if (typeof id == "string") {
                    return document.getElementById(id);
                }
                else if (typeof id == "object") {
                    return id;
                }
            }
            //快捷获取DOM id名
            function sA(id) {
                if (typeof id == "string") {
                    return id;
                }
                else if (typeof id == "object") {
                    return id.id;
                }
            }
            //-----------------------
            //变向
            function x(num) {
                if ((fx == 0 || fx == 1) && (num == 2 || num == 3)) {
                    fx = num;
                }
                if ((fx == 2 || fx == 3) && (num == 0 || num == 1)) {
                    fx = num;
                }
                if (fx == num) {
                    lstop();
                    dong()
                    lstart(300);
                }
            }
            //下一步
            function getx() {
                switch (fx) {
                    case 0:
                        return sarr[0] - 30;
                    case 1:
                        return sarr[0] + 30;
                    case 2:
                        return sarr[0] - 1;
                    case 3:
                        return sarr[0] + 1;
                }
            }
            //幢墙判断
            function zhuangq(xy) {
                switch (fx) {
                    case 0:
                        return xy < 0;
                    case 1:
                        return xy > 899;
                    case 2:
                        return (sarr[0] + 1) % 30 == 1;
                    case 3:
                        return (sarr[0] + 1) % 30 == 0;
                }
            }
            //幢自己判断
            function zhuangz(xy, ar) {
                for (var i = ar.length - 1 ; i >= 0; i--) {
                    if (xy == ar[i]) {
                        return true;
                    }
                }
                return false;
            }
            //移动
            function dong() {
                var xy = parseInt(getx());
                if (zhuangz(xy, sarr)) {
                    alert("幢自己");
                    load();
                }
                else if (zhuangq(xy) || zhuangz(xy, qarr)) {
                    alert("幢墙");
                    load();
                }
                else {
                    sarr.unshift(xy);
                    if (chi(xy)) {
                        suiji();
                    }
                    else {
                        var zh = sarr.pop();
                        barr[zh].className = "di";
                    }
                    setshe();
                }
            }
            //
            function chi(xy) {
                for (var i = 0 ; i < carr.length; i++) {
                    if (xy == carr[i]) {
                        carr.splice(i, 1);
                        return true;
                    }
                }
                return false;
            }
            //随机吃
            function suiji() {
                var j=carr.length;
                for (var i = 0 ; i < 3 - j; i++) {
                    var m = sjshu();
                    carr.push(m);
                }
            }
            //随机数
            function sjshu() {
                while (true) {
                    var m = parseInt(Math.random() * 1000);
                    if (m >= 0 && m < 900) {
                        if (!zhuangz(m, sarr) && !zhuangz(m, carr) && !zhuangz(m, qarr)) {
                            return m;
                        }
                    }
                }
            }
            //画蛇
            function setshe() {
                barr[sarr[0]].className = "one";
                for (var i = 1 ; i < sarr.length; i++) {
                    barr[sarr[i]].className = "she";
                }
                for (var i = 0 ; i < carr.length; i++) {
                    barr[carr[i]].className = "chi";
                }
                for (var i = 0 ; i < qarr.length; i++) {
                    barr[qarr[i]].className = "qiang";
                }
            }
            //键盘上下左右
            function keysxzy(e) {
                var i = 0;
                switch (e.key) {
                    case "Up":
                        i = 0;
                        break;
                    case "Down":
                        i = 1;
                        break;
                    case "Left":
                        i = 2;
                        break;
                    case "Right":
                        i = 3;
                        break;
                }
                x(i);
            }
            //开始
            function lstart(t) {
                tout = setInterval(dong, t);
            }
            //停止
            function lstop() {
                clearInterval(tout);
            }
            //初始化
            function load() {
                if (tout != undefined) {
                    lstop();
                }
                document.onkeyup = keysxzy;
                fx = 3;
                box = A("box");
                box.innerHTML = "";
                for (var i = 0 ; i < 900; i++) {
                    var d = document.createElement('div');
                    d.className = "di";
                    d.id = "div" + i;
                    box.appendChild(d);
                }
                sarr = [305, 304, 303, 302, 301, 300];
                qarr = [607, 606, 605, 604, 603, 602, 289, 259, 229, 199, 169, 139];
                carr = [];
                barr = box.all;
                suiji()
                setshe();
            }
            var tout;
        </script>
    </head>
    <body onload="load()">
        <div align="center">
            <br />
            <div id="box">
            </div>
            <input id="Button1" type="button" value="动" onclick="lstart(300);" />
            <input id="Button6" type="button" value="停" onclick="lstop();" />
            操作: 按键盘上下左右移动
            <br />
            <input id="Button2" class="btn" type="button" value="上" onclick="x(0);" />
            <br />
            <input id="Button3" class="btn" type="button" value="左" onclick="x(2);" />
            &nbsp;&nbsp;&nbsp;&nbsp;
            <input id="Button4" class="btn" type="button" value="右" onclick="x(3);" />
            <br />
            <input id="Button5" class="btn" type="button" value="下" onclick="x(1);" />
            <br />
            <a href="../game2/xqi.html">ie10象棋</a>
            <br />
            <br />
            <a href="../game2/xqi2.html">ie9象棋</a>
            <br />
            <br />
            <a href="../Default.html">返回</a>
            <br />
            <br />
        </div>
    </body>
    </html>

    贪吃蛇

  • 相关阅读:
    求逆序对
    2018浙江省赛(ACM) The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple
    江西财经大学第一届程序设计竞赛
    EOJ Monthly 2018.4
    AtCoder Regular Contest 096
    “今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)
    Wannafly挑战赛14
    是男人就过 8 题--Pony.AI A AStringGame
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛
    第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛
  • 原文地址:https://www.cnblogs.com/spider024/p/3072920.html
Copyright © 2020-2023  润新知