HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>狂拍灰太狼游戏</title>
    <link rel="stylesheet" href="css/index.css">
    <script src="js/jquery-1.12.4.js"></script>
    <script src="js/index.js"></script>
</head>
<body>
<div class="container">
    <h1 class="score">0</h1>
    <div class="progress"></div>
    <button class="start">开始游戏</button>
    <div class="rules">游戏规则</div>
    <div class="rule">
        <p>游戏规则:</p>
        <p>1.游戏时间:60s</p>
        <p>2.拼手速,殴打灰太狼+10分</p>
        <p>3.殴打小灰-10分</p>
        <a href="#" class="close">关闭</a>
    </div>
    <div class="mask">
        <h1>GAME OVER</h1>
        <button class="reStart">重新开始</button>
    </div>
</div>
</body>
</html>

CSS

*{
    padding: 0;
    margin: 0;
}
.container{
    width: 320px;
    height: 480px;
    background: url("../images/game_bg.jpg") no-repeat 0 0;
    margin: 50px auto;
    position: relative;
}
.container>h1{
    color: white;
    margin-left: 60px;
}
.container>.progress{
    width: 180px;
    height: 16px;
    background: url("../images/progress.png") no-repeat 0 0;
    position: absolute;
    left: 63px;
    top: 66px;
}
.container>.start{
    width: 150px;
    /*高度加不加其实都行,因为有行高了嘛,把高度就给撑起来了*/
    height: 35px;
    line-height: 35px;
    /*这句就算不加文字也是居中的,因为是在按钮里*/
    text-align: center;
    background: linear-gradient(#E55C3D,#C50000);
    border: none;
    color: white;
    font-size: 20px;
    border-radius: 20px;
    position: absolute;
    top: 320px;
    /*绝对定位的元素left设为50%时,是已左上角为原点的,所以只要再使用margin属性添加负值补偿回来即可。便可左右居中*/
    left: 50%;
    margin-left: -75px;
}
.container>.rules{
    width: 100%;
    height: 20px;
    background: #ccc;
    position: absolute;
    bottom: 0;
    left: 0;
    /*这个就必须得加上了,div可不像按钮有有自动居中的效果*/
    text-align: center;
}
.container>.rule{
    height: 100%;
    width: 100%;
    background: rgba(0,0,0,0.5);
    /*由于container这个div里刚开始有个计分的h1,它是块元素,所以会站位,所以要绝对定位调这个蒙版的位置*/
    position: absolute;
    bottom: 0;
    left: 0;
    padding-top: 100px;
    box-sizing: border-box;
    text-align: center;
    display: none;
}
.rule>p{
    line-height: 50px;
    color: white;
}
.rule>a{
    color: red;
}
.container>.mask{
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.5);
    position: absolute;
    left: 0;
    bottom: 0;
    padding-top: 200px;
    box-sizing: border-box;
    text-align: center;
    display: none;
}
.mask>h1{
    color: #f84f03;
    /*字体阴影,前两个参数是x,y轴偏移距离,第三个是模糊程度,0代表无模糊,第四个代表字体阴影的颜色*/
    text-shadow: 3px 3px 0 white;
}
.mask>.reStart{
    width: 150px;
    height: 35px;
    line-height: 35px;
    text-align: center;
    font-size: 20px;
    border-radius: 20px;
    border: none;
    position: absolute;
    top: 320px;
    left: 50%;
    margin-left: -75px;
    color: white;
    background: linear-gradient(#74ACCF,#007DDC);
}

JS

$(function () {
    //1.监听游戏规则事件点击
    $(".rules").click(function () {
        $(".rule").stop().fadeIn(100);
    });
    //2.监听游戏规则关闭事件点击
    $(".close").click(function () {
        $(".rule").stop().fadeOut(100);
    });
    //3.监听开始游戏事件点击
    $(".start").click(function () {
        //开始游戏按钮消失
        $(this).stop().fadeOut(100);
        //执行进度条方法
        progressHandler();
        //执行灰太狼动画
        startWolfAnimation();
    });
    //4.监听重新开始游戏事件点击
    $(".reStart").click(function () {
        //重新开始界面消失
        $(".mask").stop().fadeOut();
        //重新执行进度条方法
        progressHandler();
        //重新执行灰太狼动画效果
        startWolfAnimation();
        //重新开始的时候分数要归零
        $(".score").text(0);
    });
    //定义一个专门处理进度条的方法
    function progressHandler() {
        $(".progress").css({
            width:180
        })

        //开启定时器,进度条长度逐渐减短
        var timer=setInterval(function () {
            /*
            (1).当这个进度条的长度放在定时器里面的时候,下面有个进度条的长度随分数变化的代码,要写成如下所示的那个样子,
            (2)若进度条的长度放在定时器外面,即window.$progressWidth,那么下面的代码只需写成
                if(flag){window.$progressWidth+=10}else{window.$progressWidth-=10}即可。
            因为(1)情况下,是先开启了定时器,然后再拿到定时器的长度,即定时器的长度是不断更新的。如果下面的代码不变,
            而将var $progressWidth=$(".progress").width();放在定时器上面的话,就是说先拿到定时器的长度,然后开启定时器,
            下面的代码 $(".progress").css({ width: $(".progress").width()+10})是改变定时器的值,而不是$progressWidth
            的值,所以会出现视觉上猛的一增长,但也会瞬间恢复原长的视觉效果,在根本上不起作用。
            * */
            //拿到进度条的长度
            var $progressWidth=$(".progress").width();
            $progressWidth-=1;
            $(".progress").css({
                width:$progressWidth
            })
            //如果进度条的长度小于等于0,那么关闭定时器,并将重新开始界面显示出来,并停止狼的动画效果
            if($progressWidth<=0){
                clearInterval(timer);
                $(".mask").stop().fadeIn(100);
                stopWolfAnimation();
            }
        },100)
    }
    //定义一个专门处理灰太狼动画的方法
    var wolfTimer;
    function startWolfAnimation() {
        //定义两个数组保存所有灰太狼和小灰灰的图片
        var wolf_1=['./images/h0.png','./images/h1.png','./images/h2.png', './images/h3.png','./images/h4.png',
            './images/h5.png','./images/h5.png','./images/h7.png','./images/h8.png','./images/h9.png',]
        var wolf_2=['./images/x0.png','./images/x1.png','./images/x2.png', './images/x3.png','./images/x4.png',
            './images/x5.png','./images/x5.png','./images/x7.png','./images/x8.png','./images/x9.png',]
        //定义一个数组用来保存图片出现的位置
        var arrPos=[
            {left:"100px",top:"115px"},
            {left:"20px",top:"160px"},
            {left:"190px",top:"142px"},
            {left:"105px",top:"193px"},
            {left:"19px",top:"221px"},
            {left:"202px",top:"212px"},
            {left:"120px",top:"275px"},
            {left:"30px",top:"295px"},
            {left:"209px",top:"297px"}
        ];

        /*
       Math.random()是随机生成0-1的数, Math.round()是四舍五入
       扩展:
       parseInt(5.1234) //5 只保留整数部分
       Math.floor(5.1234)//5 向下取整,和parseInt一样
       Math.ceil(5.1234) //6向上取整(有小数,就+1)
       Math.round(5.1234)//四舍五入
       Math.abs(-1)//取绝对值
       Math.max(1,2)//2 返回两者中较大值
       Math.min(1,2)//1 返回两者中较小者
       Math.random()//随机生成0-1的数
       */
        //生成随机位置
        var wolfPosIndex=Math.round(Math.random()*8);
        $wolfImage=$("<image src='' class='wolfImage'>")
        $wolfImage.css({
            position:"absolute",
            left:arrPos[wolfPosIndex].left,
            top:arrPos[wolfPosIndex].top
        })
        //随机获取狼的类型
        var wolfType=Math.round(Math.random())==0?wolf_1:wolf_2
        //实现灰太狼和小灰灰的动画效果
        /*
        此处将两个索引定义为在内部的全局变量,是为了再点击狼后,无论何时,这个狼逐渐出现的动画就要停止,而改为拍打的动画
         */
        window.wolfStartIndex=0;
        window.wolfEndIndex=5;
        wolfTimer=setInterval(function () {
            if(wolfStartIndex<wolfEndIndex) {
                $wolfImage.attr("src",wolfType[wolfStartIndex])
                wolfStartIndex++;
            }
            else {
                $wolfImage.remove();
                /*这个定时器记得一定要关,否则不关闭这个定时器而在调用startWolfAnimation方法时,就会有多个定时器
                同时打开,就会出现万狼出洞的效果
                * */
                 clearInterval(wolfTimer);
                startWolfAnimation();
            }

        },300)
        $(".container").append($wolfImage)
        gameRules($wolfImage);
    }
    //定义一个专门处理游戏规则的方法
    function gameRules($wolfImage) {
        $wolfImage.one("click",function () {
            //点击,改变索引,即停止当前动画,改为拍打动画
            window.wolfStartIndex=5;
            window.wolfEndIndex=9;
            //获取图片的地址
            var $src=$(this).attr("src");
            //    根据图片判断是否是灰太狼
            var flag=$src.indexOf("h")>-1;
            if (flag){
                //如果是灰太狼,那么分数+10,并且进度条的长度就+10
                $(".score").text(parseInt( $(".score").text())+10);
                $(".progress").css({
                    width: $(".progress").width()+10
                })
            }
            else {
                //如果是小灰灰,那么分数-10,并且进度条的长度-10
                $(".score").text(parseInt( $(".score").text())-10);
                $(".progress").css({
                    width: $(".progress").width()-10
                })
            }
        })
    }
    //定义一个灰太狼动画结束的方法
    function stopWolfAnimation() {
        /*
        在停止动画的时候,首先要把最后的图片给移除了,如何得到这个图片呢?方法有三
        1.将这个图片在外部定义为全局变量 即var $wolfImage
        2.将这个图片在内部定义为全局变量 即window.$wolfImage
        3.在创建这个图片的时候给这个图片加个class
        */
        $(".wolfImage").remove();
        /*
        停止动画的时候也要关闭定时器,不然狼的动画效果会持续进行,获取这个wolfTimer方法有二
        1.在外部定义全局变量 即var wolfTimer
        2.在内部定义全局变量 即window.wolfTimer
        */
        clearInterval(wolfTimer);
    }
})

 

怎么玩java喜羊羊与灰太狼老游戏 喜羊羊灰太狼游戏大全_怎么玩java喜羊羊与灰太狼老游戏

需要图片的请取百度云自取。

链接:https://pan.baidu.com/s/1XPtKFCDGJX0f-nPLMS8nGQ 
提取码:tm2t 
复制这段内容后打开百度网盘手机App,操作更方便哦