锅打灰太狼游戏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #wrap{
            width: 320px;
            height: 400px;
            position: relative;
            background: url('img/game_bg.jpg') no-repeat;
        }
        #score{
            font-size: 24px;
            color: #fff;
            position: absolute;
            left: 60px;
            top: -18px;
        }
        #timeImg{
            width: 100px;
            height: 16px;
            position: absolute;
            left: 63px;
            top: 66px;
            border-radius: 16px;
        }
        #start{
            width: 100%;
            font-size: 50px;
            text-align: center;
            color: orange;
            position: absolute;
            top: 180px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="wrap">
        <p id="score">0</p>
        <img src="img/progress.png" id="timeImg">
        <div id="start">开始</div>
    </div>
</body>
<script src="tween.js"></script>
<script>
    //坐标数组
    var ltArr = [["98px","115px"],["20px","160px"],["188px","142px"],["16px","220px"],["102px","192px"],["200px","212px"],["30px","294px"],["120px","274px"],["208px","296px"]];

    // 用来生成不断创建狼的计时器
    var createTimer = null;

    // 记录页面中狼出现的位置下标数组
    var indexArr = [];
    var scoreNum = 0;

    // 开始游戏
    start.onclick = function(){
        // 隐藏开始按钮
        this.style.display = "none";
        timerFu();
        // 创建狼
        createTimer = setInterval(function(){
            createWolf();
        },1000)
    }
    // 创建狼的函数
    function createWolf(){
        var n = randomNum(0,ltArr.length);
        if (indexArr.indexOf(n) == -1) {
            // 说明本次随机的下标还没有狼
            indexArr.push(n);
        }else{
            // 如果位置已经有狼了,那么就等待下次创建重新来过
            return;
        }
        // 创建狼图片
        var wolf = new Image();
        // 生成狼的类型
        var type = wolfType();  //“x"/"h"
        // 狼图片下标
        var index = 0 ;
        // 狼出现的位置
        // var wolfLT = ltArr[n];  //"xxpx","yypx"
        wolf.style.position="absolute";
        wolf.style.left =ltArr[n][0];
        wolf.style.top = ltArr[n][1];
        // 狼点击
        wolf.onclick = function(){
            // 解决重复点击创建多个计时器,首次计时器无法关闭的问题
            wolf.onclick = null;
            // 计算得分
            if (type == "x") {
                scoreNum -= 10 ; 
            }else{
                scoreNum += 10;
            }
            score.innerHTML = scoreNum ;
            // 关闭狼身上正在运行的计时器
            clearInterval(wolf.upTimer);
            clearInterval(wolf.downTimer);
            // 更换被打击的图片路径
            index = 6;
            wolf.hurtTimer = setInterval(
                function(){
                    wolf.src = "img/"+type+index+".png";
                    index++;
                    if (index>9) {
                        clearInterval(wolf.hurtTimer);
                        wolf.remove();
                        indexArr.shift();
                    }
                },100)
        }
        // 狼出现
        wolf.upTimer = setInterval(function(){
            wolf.src = "img/"+type+index+".png";
            index++;
            if (index >= 5) {
                // 关闭狼出现的计时器,打开狼下降的计时器
                clearInterval(wolf.upTimer);
                wolf.downTimer = setInterval(function(){
                    wolf.src = "img/"+type+index+".png";
                    index--;
                    if (index==0) {
                        clearInterval(wolf.downTimer);
                        // 将狼从wrap中删除
                        wolf.remove();
                        // 将此狼的位置解放,先创建的先消失
                        indexArr.shift();
                    }
                },150)
            }
        },150)
        // 将生成的狼写入wrap中
        wrap.appendChild(wolf);
    }

    // 倒计时的函数
    function timerFu(){
        // 游戏时间是1分钟=60s=60000ms
        var t=0,d=2000,b=180,c=-180;
        var timer = setInterval(function(){
            t++;
            timeImg.style.width = Tween.Linear(t,b,c,d)+"px";
            if (t>=d) {
                // 游戏结束
                clearInterval(timer);
                // 关闭创建狼的计时器
                clearInterval(createTimer);
                start.innerHTML = "GAME OVER";
                start.style.display="block";
            }
        },30)
    }

    //生成狼类型的函数
    function wolfType(){
        n = randomNum(0,100);
        if (n < 30) {
            // 小灰灰
            return "x";
        }else{
            // 灰太狼
            return "h";
        }
    }
    // 随机数函数
    function randomNum(max,min){
        return Math.floor(Math.random()*(max-min)+min);
    }
</script>
</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值