vue实现打地鼠小游戏


Posted in Javascript onAugust 21, 2020

本文实例为大家分享了vue实现打地鼠小游戏的具体代码,供大家参考,具体内容如下

效果图如下:

vue实现打地鼠小游戏

代码如下:

<template>
 <div class="game">
 <h2>打地鼠游戏</h2>
 <div class="wraper">
 <div class="item" v-for="n in TOTAL" :key="n">
 <div :style="{'visibility': random === n ? 'visible' : 'hidden'}" @click="clickItem">{{n}}号地鼠</div>
 </div>
 </div>
 <div class="scoped">
 <div class="set">
 <p>设置参数</p>
 <p>
 速度: <input type="number" v-model="setSpeed">
 </p>
 <p>
 总数:<input type="number" v-model="setNum">
 </p>
 <p>
 <button @click="playGame">开始</button>
 </p>
 </div>
 <div class="count set">
 <h3>统计分数面板</h3>
 <h3>总数: {{TOTAL}}</h3>
 <h3>击中: {{clickNum}}</h3>
 <h3>击中率: {{level}}%</h3>
 </div>
 </div>
 </div>
</template>
 
<script>
 
export default {
 name: 'App',
 data () {
 return {
 clickFlag: true, // 单个地鼠只能点击一次
 setNum: 40, // 绑定设置地洞数量
 setSpeed: 1000, // 绑定设置地鼠出现速度
 speed: 2000, // 地鼠出现速度
 random: '', // 随机出现的地鼠位置
 TOTAL: 40, // 地鼠总数
 count: 0, // 统计总共出现了多少次地鼠同于判断不能大于总数
 clickNum: 0, // 点中地鼠统计
 timmerId: null
 };
 },
 computed: {
 // 统计打中的地鼠数量
 level: function () {
 let num = ((this.clickNum / this.TOTAL) * 100).toFixed(2) || 0;
 return num;
 }
 },
 created () {
 },
 mounted () {
 },
 methods: {
 // 开始游戏
 playGame () {
 this.random = '';
 this.speed = parseInt(this.setSpeed);
 this.TOTAL = parseInt(this.setNum);
 clearInterval(this.timmerId);
 this.timmerId = setInterval(() => {
 this.random = Math.floor(Math.random() * this.TOTAL + 1);
 this.clickFlag = true; // 开放点击
 this.count++;
 if (this.count >= this.TOTAL) {
 clearInterval(this.timmerId);
 }
 }, this.speed);
 },
 // 点击地鼠
 clickItem () {
 if (this.clickFlag) {
 (this.count < this.TOTAL) && this.clickNum++;
 this.clickFlag = false;
 }
 }
 }
};
</script>
<style lang="less" scoped>
.game {
 border: 1px solid #ccc;
 width: 1200px;
 padding: 10px;
 user-select: none;
 &::after {
 content: "";
 display: block;
 clear: both;
 }
 h2 {
 font-size: 16px;
 color: #eee;
 padding: 10px 0;
 margin-bottom: 20px;
 border-bottom: 1px solid #ccc;
 }
 .wraper {
 width: 900px;
 float: left;
 }
 .scoped {
 width: 260px;
 height: 540px;
 float: left;
 padding-left: 15px;
 border-left: 1px solid #ccc;
 h3 {
 font-size: 16px;
 color: #fff;
 }
 .set {
 height: 200px;
 width: 100%;
 border: 1px solid #ccc;
 p {
 padding: 10px;
 text-align: center;
 color: #fff;
 font-size: 16px;
 button {
 width: 90%;
 }
 }
 }
 .count {
 .set;
 margin-top: 20px;
 padding-top: 25px;
 text-align: center;
 line-height: 40px;
 h3 {
 font-weight:normal;
 }
 }
 }
 .item {
 display: inline-block;
 height: 100px;
 width: 100px;
 border-radius: 50px;
 margin: 0 10px 10px 0;
 text-align: center;
 line-height: 100px;
 font-size: 20px;
 border: 1px solid #ccc;
 div {
 height: 100%;
 background: #eee;
 border-radius: 50px;
 }
 }
}
</style>

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
对Jquery中的ajax再封装,简化操作示例
Feb 12 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
Nov 16 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
Vue-resource拦截器判断token失效跳转的实例
Oct 27 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 Javascript
微信小程序实现提交input信息到后台的方法示例
Jan 19 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
对Layer UI 模块化的用法详解
Sep 26 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 Javascript
js实现滑动进度条效果
Aug 21 #Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 #Javascript
vue组件开发之tab切换组件使用详解
Aug 21 #Javascript
vue组件开发之slider组件使用详解
Aug 21 #Javascript
Vue左滑组件slider使用详解
Aug 21 #Javascript
vue实现移动端触屏拖拽功能
Aug 21 #Javascript
vue实现移动端拖动排序
Aug 21 #Javascript
You might like
77A一级收信机修理记
2021/03/02 无线电
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
类之Prototype.js学习
2007/06/13 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
Farnell德国:电子元器件供应商
2018/07/10 全球购物
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
生产内勤岗位职责
2013/12/07 职场文书
小区门卫岗位职责
2013/12/31 职场文书
投标服务承诺书
2014/05/28 职场文书
运动会观后感
2015/06/09 职场文书
宾馆客房管理制度
2015/08/06 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis