jQuery实现贪吃蛇简单小游戏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../code/jq/jquery-3.3.1.min.js"></script>
</head>
<style>
    .box {
        width: 400px;
        height: 400px;
        border: red solid 3px;
    }

    .miniBox {
        float: left;
        border: white 1px solid;
        font-size: 6px;
        color: white;
    }

    .qiang {
        background: brown;
    }

    .kong {
        background: grey;
    }

    .snake {
        background: greenyellow;
    }
</style>
<body>
<button>开始创建地图</button>
<div class="box">

</div>


    //创建地图
    //1.设置地图的大小
    //2.设置地图的边界


    //创建蛇
    //1.数组存放蛇
    //2.蛇可以移动
    //3.可以控制蛇的移动方向
    //4.蛇可以吃食物,并且变长


    var direction = "r";
    //获取节点
    $(function () {
        $('button').click(function () {
            // 获取地图大小
            var num = prompt('请输入游戏难度') - 0;
            creatMap(num, $('.box'));

            //创建蛇
            var snakeArr = [num + 1, num + 2, num + 3];
            // 画蛇
            snakeH(snakeArr, num);
            run(snakeArr, num);
        })

        // 画蛇
        function snakeH(snakeArr) {
            for (var i = 0; i < snakeArr.length; i++) {
                $('.box').children().eq(snakeArr[i]).removeClass("kong").addClass("snake");
            }
        }

        // 移动蛇
        function run(snakeArr, num) {
            var timer = setInterval(function () {
                //方向
                var nextIndex = 0;
                //计算下一次的位置
                //
                if (direction = "r") {
                    nextIndex = snakeArr[snakeArr.length - 1] + 1;
                } else if (direction = "l") {
                    nextIndex = snakeArr[snakeArr.length - 1] - 1;
                } else if (direction = "t") {
                    nextIndex = snakeArr[snakeArr.length - 1] - num;
                } else if (direction = "b") {
                    nextIndex = snakeArr[snakeArr.length - 1] + num;
                }
                // 判断新位置是不是墙
                if ($('.box').children().eq(nextIndex).hasClass('qiang')) {
                    clearInterval(timer);
                    return alert('撞墙了');
                }

                //删除蛇的样式
                $('.box').children().eq(snakeArr[0]).removeClass('snake').addClass('kong');
                // 画蛇
                $('.box').children().eq(nextIndex).removeClass('kong').addClass('snake');
                //改变蛇的数组
                snakeArr.shift();
                snakeArr.push(nextIndex);
                console.log(snakeArr);


            }, 500)
        }


    })


    //封装一个方法   创建地图


    function creatMap(num, $box) {
        for (var i = 0; i < num * num; i++) {

            // 判断是墙还是移动的区域
            if (i < num || i % num === 0 || (i + 1) % num === 0 || i > (num - 1) * num) {
                $box.append($('<div class="miniBox qiang">' + i + '</div>'))
                continue;
            }

            // 创建小div
            $box.append($('<div class="miniBox kong">' + i + '</div>'))
        }
        $box.children().css({
            width: 400 / num - 2,
            height: 400 / num - 2
        })
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值