zoukankan      html  css  js  c++  java
  • 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>

    贪吃蛇

  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/spider024/p/3072920.html
Copyright © 2011-2022 走看看