vue實(shí)現(xiàn)打地鼠小游戲
本文實(shí)例為大家分享了vue實(shí)現(xiàn)打地鼠小游戲的具體代碼,供大家參考,具體內(nèi)容如下
效果圖如下:

代碼如下:
<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}}號(hào)地鼠</div>
</div>
</div>
<div class="scoped">
<div class="set">
<p>設(shè)置參數(shù)</p>
<p>
速度: <input type="number" v-model="setSpeed">
</p>
<p>
總數(shù):<input type="number" v-model="setNum">
</p>
<p>
<button @click="playGame">開(kāi)始</button>
</p>
</div>
<div class="count set">
<h3>統(tǒng)計(jì)分?jǐn)?shù)面板</h3>
<h3>總數(shù): {{TOTAL}}</h3>
<h3>擊中: {{clickNum}}</h3>
<h3>擊中率: {{level}}%</h3>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'App',
data () {
return {
clickFlag: true, // 單個(gè)地鼠只能點(diǎn)擊一次
setNum: 40, // 綁定設(shè)置地洞數(shù)量
setSpeed: 1000, // 綁定設(shè)置地鼠出現(xiàn)速度
speed: 2000, // 地鼠出現(xiàn)速度
random: '', // 隨機(jī)出現(xiàn)的地鼠位置
TOTAL: 40, // 地鼠總數(shù)
count: 0, // 統(tǒng)計(jì)總共出現(xiàn)了多少次地鼠同于判斷不能大于總數(shù)
clickNum: 0, // 點(diǎn)中地鼠統(tǒng)計(jì)
timmerId: null
};
},
computed: {
// 統(tǒng)計(jì)打中的地鼠數(shù)量
level: function () {
let num = ((this.clickNum / this.TOTAL) * 100).toFixed(2) || 0;
return num;
}
},
created () {
},
mounted () {
},
methods: {
// 開(kāi)始游戲
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; // 開(kāi)放點(diǎn)擊
this.count++;
if (this.count >= this.TOTAL) {
clearInterval(this.timmerId);
}
}, this.speed);
},
// 點(diǎn)擊地鼠
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>
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue v-for出來(lái)的列表,點(diǎn)擊某個(gè)li使得當(dāng)前被點(diǎn)擊的li字體變紅操作
這篇文章主要介紹了vue v-for出來(lái)的列表,點(diǎn)擊某個(gè)li使得當(dāng)前被點(diǎn)擊的li字體變紅操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Vue.js實(shí)現(xiàn)微信過(guò)渡動(dòng)畫(huà)左右切換效果
這篇文章主要給大家介紹了利用Vue.js仿微信過(guò)渡動(dòng)畫(huà)左右切換效果的相關(guān)資料,需要用到的技術(shù)棧是Vue+Vuex。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
el-select如何獲取當(dāng)前選中的對(duì)象所有(item)數(shù)據(jù)
在開(kāi)發(fā)業(yè)務(wù)場(chǎng)景中我們通常遇到一些奇怪的需求,下面這篇文章主要給大家介紹了關(guān)于el-select如何獲取當(dāng)前選中的對(duì)象所有(item)數(shù)據(jù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
在同一個(gè)Vue項(xiàng)目中的不同vue和HTML頁(yè)面之間進(jìn)行跳轉(zhuǎn)方式
這篇文章主要介紹了在同一個(gè)Vue項(xiàng)目中的不同vue和HTML頁(yè)面之間進(jìn)行跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue2.x中的父組件傳遞數(shù)據(jù)至子組件的方法
這篇文章主要介紹了Vue2.x中的父組件數(shù)據(jù)傳遞至子組件的方法,需要的朋友可以參考下2017-05-05
基于vue2框架的機(jī)器人自動(dòng)回復(fù)mini-project實(shí)例代碼
本篇文章主要介紹了基于vue2框架的機(jī)器人自動(dòng)回復(fù)mini-project實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06

