HTML+CSS+JS实现抓娃娃机游戏

 更新时间:2022年04月24日 11:36:21   作者:前端奶爸  
这篇文章主要介绍了如何利用HTML+CSS+JS制作抓娃娃机游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

前段时间去商场吃饭的时候看到一个有趣的娃娃机,一个密封的机器里底部放着一些被捆绑好的龙虾,可以买币去抓龙虾,抓到以后可以初加工费找附近的商家给做成龙虾大餐,感觉很有意思,把抓抓玩出了一个新的高度~

主要是抓到以后还可以出手工费进行烹饪,很吸引人,周边围观的人也很多,观察了一会发现。爪子的抓力不够,龙虾在水里还能移动,而且感觉每一个个头都不小,那小爪感觉根本抓不起来~~

到家后孩子就说爸爸你可不可以做一个娃娃机呢?

身为一个程序员,这点要求我感觉还是难不倒我,然后就突发奇想,给孩子在手机上做一个简易娃娃机。起初的想法是哄她开心,看到掘金最近有小游戏的活动,顺便分享给大家~~

效果

如上图,一个移动的抓手,以及几个礼物样品,还有左右移动,抓起按钮,素材很简单,但是做出来的效果还是有娃娃机的感觉的~

地址

代码托管地址在github在线预览地址资源路径不对无法访问,如果有需要源码的同学可以自行去git仓库获取~

布局

布局部分比较简单,直接贴代码了。可以根据自己的需求不同自定义即可~

<div class="page-portrait" id="page-portrait">
    <div id="pageContainer" class="page-container game-box">
      <div class="poster-main">
        <ul class="poster-list">
          <li class="item lw1"><img src="images/dx-lw1.png" alt=""></li>
          <li class="item lw2"><img src="images/dx-lw2.png" alt=""></li>
          <li class="item lw3"><img src="images/dx-lw3.png" alt=""></li>
          <li class="item lw4"><img src="images/dx-lw4.png" alt=""></li>
          <li class="item lw5"><img src="images/dx-lw5.png" alt=""></li>
          <li class="item lw6"><img src="images/dx-lw6.png" alt=""></li>
        </ul>
      </div>
      <div id="stop" class="button"></div>
      <div id="left" class="left-btn"></div>
      <div id="right" class="right-btn"></div>
      <div class="zhua-top">
        <span class="zhua-zuo"></span>
        <span class="zhua-zhu"></span>
        <div class="zhua zhuamove"></div>
      </div>
    </div>
</div>

css用到了几个运动处理了爪子的动效,如下方代码所示

@keyframes run {
  0% {
    background-image: url(../images/dx-zhua3.png);
  }
  25% {
    background-image: url(../images/dx-zhua2.png);
  }
  50% {
    background-image: url(../images/dx-zhua1.png);
  }
  75% {
    background-image: url(../images/dx-zhua2.png);
  }
  100% {
    background-image: url(../images/dx-zhua3.png);
  }
}
@keyframes zhuashou {
  0% {
    top: 360px;
    background-image: url(../images/dx-zhua1.png);
  }
  100% {
    top: 360px;
    background-image: url(../images/dx-zhua2.png);
  }
}
@keyframes zhuadown {
  0% {
    top: 138px;
    background-image: url(../images/dx-zhua1.png);
  }
  100% {
    top: 360px;
    background-image: url(../images/dx-zhua1.png);
  }
}
@keyframes zhua-slideUp {
  0% {
    top: 360px;
    background-image: url(../images/dx-zhua2.png);
  }
  100% {
    top: 138px;
    background-image: url(../images/dx-zhua2.png);
  }
}
@keyframes img-slideUp {
  0% {
    top: 23px;
  }
  100% {
    top: -200px;
  }
}

js代码创建了一个控制器类,处理事件以及动画效果的交替等。

var Carousel = {
    data: {
    result: 1
},
init: function () {
    Carousel.control();
},
stop: function () {
    $(".zhua").removeClass("zhuamove").addClass("zhuadown");
    $(".zhua-zhu").addClass("zhudown");
    var timer01 = setTimeout(function () {
        $(".zhua").removeClass("zhuadown").addClass("zhuashou");
        var timer03 = setTimeout(function () {
            $(".zhua").removeClass("zhuashou").addClass("zhuaup");
            $(".zhua-zhu").removeClass("zhudown").addClass("zhuup");
            $(".poster-list .lw" + (Carousel.data.result + 1)).addClass("img-slideUp");
        clearTimeout(timer03);
        timer03 = null;
        }, 800);
        var timer02 = setTimeout(function () {
            $(".zhua").removeClass("zhuaup").removeClass("zhuaup1");
            $(".zhua-zhu").removeClass("zhuup");
            clearTimeout(timer02);
            timer02 = null;
            alert("恭喜您抽中一等奖~");
            Carousel.start();
        }, 2500);
        clearTimeout(timer01);
        timer01 = null;
    }, 1000);
},
start: function () {
    $(".zhua").addClass("zhuamove");
    $(".zhua").removeClass("zhuadown").removeClass("zhuaup1").removeClass("zhuaup");
    $(".poster-list .item").removeClass("img-slideUp").removeClass("img-slideOutUp");
},
zhuaMove: function (num) {
    switch (num) {
        case 0:
        $(".zhua-top").animate({
            left: -145,
        },300);
        break;
        case 1:
        $(".zhua-top").animate({
            left: 0,
        },300);
        break;
        case 2:
        $(".zhua-top").animate({
            left: 145,
        },300);
        break;
    }
},
control: function () {
    $("#left").on("click", function () {
        Carousel.data.result--;
    if (Carousel.data.result <= 0) {
        Carousel.data.result = 0;
    }
    Carousel.zhuaMove(Carousel.data.result);
    });
    $("#stop").click(Carousel.stop);  
        $("#right").on("click", function () {
            Carousel.data.result++;
            if (Carousel.data.result >= 2) {
                    Carousel.data.result = 2;
            }
            Carousel.zhuaMove(Carousel.data.result);
        });
    },
};

总结

css现在有很多的新的特性可以解决我们工作中遇到的动效以及兼容问题,有心的同学可以多多查阅文档,写一写自己感兴趣的小demo,或者给孩子做一个小游戏来玩,何尝不是一件有成就的事呢~

到此这篇关于HTML+CSS+JS实现抓娃娃机游戏的文章就介绍到这了,更多相关JS抓娃娃机内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Echarts如何实现多段圆环图

    利用Echarts如何实现多段圆环图

    这篇文章主要给大家介绍了关于利用Echarts如何实现多段圆环图的相关资料,文中通过实例代码代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • JavaScript实现简易计算器功能的两种方法

    JavaScript实现简易计算器功能的两种方法

    这篇文章主要为大家详细介绍了JavaScript实现简易计算器功能的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 深入详解JS函数的柯里化

    深入详解JS函数的柯里化

    JavaScript作为一种弱类型语言,它的隐式转换是非常灵活有趣的。当我们没有深入了解隐式转换的时候可能会对一些运算的结果会感动困惑,比如4 + true = 5。当然,如果对隐式转换了解足够深刻,能够提高对js的使用能力。这里分享一下,函数在隐式转换中的一些规则
    2021-06-06
  • js入门之Function函数的使用方法【新手必看】

    js入门之Function函数的使用方法【新手必看】

    本篇文章主要介绍js Function函数的使用方法,应该对初学Js的朋友们会有所帮助,下面就随小编一起来看下吧
    2016-11-11
  • JS使用tween.js动画库实现轮播图并且有切换功能

    JS使用tween.js动画库实现轮播图并且有切换功能

    本文通过实例代码给大家介绍了JS使用tween.js动画库实现轮播图并且有切换功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • js实现旋转的星空效果

    js实现旋转的星空效果

    这篇文章主要为大家详细介绍了js实现旋转的星空效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Ionic 2 实现列表滑动删除按钮的方法

    Ionic 2 实现列表滑动删除按钮的方法

    这篇教程将展示如何使用Ionic2添加一个简单的删除按钮到列表,当用户滑动列表项到左边的时候。这是一个处理删除列表数据时候常用的模式,具体内容大家通过本文学习吧
    2017-01-01
  • JS中style.display和style.visibility的区别实例说明

    JS中style.display和style.visibility的区别实例说明

    下面的例子说明了这种区别:在这个例子中,divContent1和divContent2隐藏的时候用的是style.display=none,这时候,后面的div会向上移动,占据已经隐藏的div的空间。divContent3和divContent4用的是style.visibility=hidden来隐藏,但是其隐藏后仍然占据原来的空间
    2013-03-03
  • layui禁用侧边导航栏点击事件的解决方法

    layui禁用侧边导航栏点击事件的解决方法

    今天小编就为大家分享一篇layui禁用侧边导航栏点击事件的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript实现相册弹窗功能(zepto.js)

    JavaScript实现相册弹窗功能(zepto.js)

    这篇文章主要介绍了JavaScript基于zepto.js实现相册弹窗功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06

最新评论