前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >css+js=贪吃蛇简版

css+js=贪吃蛇简版

作者头像
天天Lotay
发布2022-12-01 08:26:56
1.3K0
发布2022-12-01 08:26:56
举报
文章被收录于专栏:嵌入式音视频

先上简版贪吃蛇(即移动方块)xmind思维导图

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <style>
        .box {
            
            width: 30px;
            height: 30px;
            background-color: pink;
            position: fixed;
            top: 50px;
            left: 50px;
        }
    </style>
    <div id="lists"  class="box" style="top: 50px;left: 50px;">

    </div>
    <script>
        var lists = document.getElementById("lists")
        var x = 5;
        var y = 0;


        console.log(parseInt(lists.style.top));
        console.log(lists.style.left);

        setInterval(snake, 20);
        function snake() {

            var div=document.createElement("div");
            div.className="box";//在这里添加类,可以使用style里的设置
            
            lists.style.left = parseInt(lists.style.left) + x + "px";
            lists.style.top = parseInt(lists.style.top) + y + "px";
        }
        window.onkeydown = function (event) {
            var key = event.keyCode;
            switch (key) {
                // 左边
                case 37:
                    x = -5;
                    y = 0;
                    break;
                // 上边
                case 38:
                    x = 0;
                    y = -5;
                    break;
                // 右边
                case 39:
                    x = 5;
                    y = 0;
                    break;
                // 下边
                case 40:
                    x = 0;
                    y = 5;
                    break;
             
            }
        }
    </script>
</body>

</html>

版本1在codepen里的演示结果: https://codepen.io/1980450400/pen/YzGvLVz

再逐步增加难度

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 20px;
            height: 20px;
            background-color: #000;
            position: fixed;
            top:50px;
            left:50px;
        }
    </style>
</head>
<body>
    <div id="lists">
        <!-- <div class="box" style="top:50px;left:50px;"></div> -->
        <!-- <div>11</div>
        <div>10</div>
        <div>4</div>
        <div>4</div>
        <div>4</div>
        <div>4</div>
        <div>4</div>
        <div>3</div>
        <div>2</div>
        <div>1</div> -->
    </div>
    


    <script>    

        var lists = document.getElementById("lists");

        var x = 20; //控制左右 left
        var y = 0; //控制上下 top
        var dx = 50;
        var dy = 50;

        // 定时器
        setInterval(boxgame, 100);

        function boxgame(){

            // box.style.left = parseInt(box.style.left) + x + "px";
            // box.style.top = parseInt(box.style.top) + y + "px";
            // 创建小盒子
            var div = document.createElement("div");
            div.className = "box";
            // 移动位置
            div.style.left = dx + x + "px";
            div.style.top = dy + y + "px";
            lists.insertBefore(div,lists.children[0]);
            
            // 控制蛇身长度 10
            if(lists.children.length > 10){
                for(var i = 11; i < lists.children.length;i++){
                    lists.removeChild(lists.children[i]); 
                }
            }
            
            // 记录上一个位置
            dx = dx + x;
            dy = dy + y;
        }


        window.onkeydown = function(event){
            var key = event.keyCode;
            // 37左 39右  left x 
            // 38上 40下  top y

            switch(key){
                case 37:
                    console.log("左");
                    x = -20;
                    y = 0;
                    break;
                case 39:
                    console.log("右");
                    x = 20;
                    y = 0;
                    break;
                case 38:
                    console.log("上");
                    x = 0;
                    y = -20;
                    break;
                case 40:
                    console.log("下");
                    x = 0;
                    y = 20;
                    break;

            }

        }

    </script>

</body>
</html>

版本2在codepen里的演示结果:https://codepen.io/1980450400/pen/RwGJyeR

后面会逐步完善

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档