zoukankan      html  css  js  c++  java
  • javascript 编写的贪吃蛇

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <style>
            .container{height: 300px; 300px;position: relative;margin: 100px auto;background: #c2e2ae;}
            .bgTable{border: 1px solid black;border-spacing: 0;border-collapse:collapse;position: absolute}
            .bgTable td{height: 20px; 20px;border: 1px solid black}
            .bgTable tr{height: 20px; 100px;border: 1px solid black}
            .cube{display: block;height:22px; 22px;background: red;position: absolute;margin: 1px}
            #cu2{top: 0px;left:115px }
        </style>
    </head>
    <body>
        <div class="container">
            <table class="bgTable">
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
                <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
            </table>
            <span class="cube" id="cu1"></span>
            <span class="cube" id="cu2"></span>
        </div>
        <script>
            var container=document.querySelector('.container');
            var cube=document.querySelector('.cube');
            var up=38,down=40,left=37,right=39;//        上下左右 方向键的键码(keyCode)是38、40、37和39,
            var t1,t2,t3,t4;
            var cu1=document.querySelector('#cu1');
            var cu2=document.querySelector('#cu2');
            var randomdot=[0,23,46,69,92,115,138,161,184,207,230,253,276];//随机自由点位置
            var n=2;
    
            var arrLeft=[],arrTop=[];//用来存储第一个方块每一步的位置
    
            /*设置向上下左右移动*/
            function moveLeft(obj){
                 t1=setInterval(function(){
                     obj.style.left=obj.offsetLeft-24+'px';
                     arrLeft.push(obj.offsetLeft);//存储位置
                     arrTop.push(obj.offsetTop);
                     if(obj.offsetLeft<=20){clearInterval(t1);}
                 },500)
            }
            function moveRight(obj){
                t2=setInterval(function(){
                    obj.style.left=obj.offsetLeft+22+'px';
                    arrLeft.push(obj.offsetLeft);
                    arrTop.push(obj.offsetTop);
                    if(obj.offsetLeft>=270){clearInterval(t2);}
                },500)
            }
            function moveTop(obj){
                t3=setInterval(function(){
                    obj.style.top=obj.offsetTop-24+'px';
                    arrLeft.push(obj.offsetLeft);
                    arrTop.push(obj.offsetTop);
                    if(obj.offsetTop<=20){clearInterval(t3);}
                },500)
            }
            function moveBottom(obj){
                t4=setInterval(function(){
                    obj.style.top=obj.offsetTop+22+'px';
                    arrLeft.push(obj.offsetLeft);
                    arrTop.push(obj.offsetTop);
                    if(obj.offsetTop>=270){clearInterval(t4);}
                },500)
            }
            /*对上下左右按键进行监听,按下某一个,会取消其他方向的移动,*/
            document.onkeydown=function(){
                var obj=cu1;
                if(event.keyCode==up){
                    clearInterval(t1);
                    clearInterval(t2);
                    clearInterval(t3);
                    clearInterval(t4);
                    moveTop(obj);
                }else if(event.keyCode==down){
                    clearInterval(t1);
                    clearInterval(t2);
                    clearInterval(t3);
                    clearInterval(t4);
                    moveBottom(obj);
                }else if(event.keyCode==left){
                    clearInterval(t1);
                    clearInterval(t2);
                    clearInterval(t3);
                    clearInterval(t4);
                    moveLeft(obj);
                }else if(event.keyCode==right){
                    clearInterval(t1);
                    clearInterval(t2);
                    clearInterval(t3);
                    clearInterval(t4);
                    moveRight(obj);
                }
            };
            /*用来产生随机位置的自由方块*/
            function newdot(){
                var dot=document.createElement('span');
                dot.className='cube';
                container.appendChild(dot);
                console.log(container.childElementCount);
                var top1=Math.floor(Math.random()*14);
                dot.style.top=''+randomdot[top1]+'px';
                var left1=Math.floor(Math.random()*14);
                dot.style.left=''+randomdot[left1]+'px';
            }
            /*当第一个方块和自由方块的位置重叠,自由方块将跟随第一个方块移动*/
            function together(){
                var container=document.querySelector('.container');
                var small=container.lastElementChild;
                if(cube.offsetLeft==small.offsetLeft&&cube.offsetTop==small.offsetTop){
                    var a=n;//用a将n的某一次的值固定
                    setInterval(function(){
                        /*自由方块1的位置为第一个方块倒一步的位置,自由方块2的位置为第一个方块倒两步的位置,以此内推*/
                        small.style.left=arrLeft[arrLeft.length-a]-1+'px';
                        small.style.top=arrTop[arrTop.length-a]-1+'px';
                    },10);
                    newdot();
                    n++;
                }
            }
            T=setInterval(function(){
                together();
            },500);
    
        </script>
    </body>
    </html>

    采用JavaScript编写的贪吃蛇,用了数组和定时器,坐标相关的知识,用了一下午,还是挺好玩的,就是没有写游戏结束,还有一些逻辑没有完成,永远都不会死的。。。

  • 相关阅读:
    Android开发工程师文集-1 小时学会SQLite
    Android开发工程师文集-1 小时学会各种Drawable
    Android开发工程师文集-1 小时学会各种Drawable
    Android精通教程-Android入门简介
    Android精通教程-Android入门简介
    AndroidStudio制作登录和注册功能的实现,界面的布局介绍
    AndroidStudio制作登录和注册功能的实现,界面的布局介绍
    Android开发的插件Code Generator与LayoutCreator的安装与使用,提升你的开发效率
    Android开发的插件Code Generator与LayoutCreator的安装与使用,提升你的开发效率
    AndroidStudio项目制作倒计时模块
  • 原文地址:https://www.cnblogs.com/xueandsi/p/5974225.html
Copyright © 2011-2022 走看看