如何基于Vue制作一個(gè)猜拳小游戲
前言:
在工作學(xué)習(xí)之余玩一會(huì)游戲既能帶來(lái)快樂(lè),還能緩解生活壓力,跟隨此文一起制作一個(gè)小游戲吧。
描述:
石頭剪子布,是一種猜拳游戲。起源于中國(guó),然后傳到日本、朝鮮等地,隨著亞歐貿(mào)易的不斷發(fā)展它傳到了歐洲,到了近現(xiàn)代逐漸風(fēng)靡世界。簡(jiǎn)單明了的規(guī)則,使得石頭剪子布沒(méi)有任何規(guī)則漏洞可鉆,單次玩法比拼運(yùn)氣,多回合玩法比拼心理博弈,使得石頭剪子布這個(gè)古老的游戲同時(shí)用于“意外”與“技術(shù)”兩種特性,深受世界人民喜愛(ài)。
游戲規(guī)則:石頭打剪刀,布包石頭,剪刀剪布。
現(xiàn)在,需要你寫(xiě)一個(gè)程序來(lái)判斷石頭剪子布游戲的結(jié)果。
項(xiàng)目效果展示:
對(duì)應(yīng)素材:
代碼實(shí)現(xiàn)思路:
準(zhǔn)備對(duì)應(yīng)的素材用于界面效果展示。
在盒子中上面設(shè)置兩個(gè) img 標(biāo)簽,src 用動(dòng)態(tài)展示,左側(cè)代表玩家,右側(cè)代表電腦。
在JS中設(shè)置定時(shí)器,每隔0.1秒切換背景圖,達(dá)到一個(gè)閃爍的效果。
給代表玩家的image動(dòng)態(tài)賦值加載中的動(dòng)畫(huà),同時(shí)在頁(yè)面下方實(shí)現(xiàn)選擇的區(qū)域,讓用戶(hù)能夠點(diǎn)擊。
實(shí)現(xiàn)圖片的點(diǎn)擊事件,當(dāng)點(diǎn)擊時(shí)修改上方代表玩家圖片的src值,同時(shí)停止右側(cè)代表電腦的圖片的閃爍,并通過(guò)下標(biāo)判斷電腦的選擇。
在給玩家圖片賦值的同時(shí),停止電腦方圖片的閃爍,獲取其src,判斷哪方獲勝并在頁(yè)面進(jìn)行顯示。
在頁(yè)面底部實(shí)現(xiàn)再來(lái)一次按鈕,點(diǎn)擊時(shí)將頁(yè)面數(shù)據(jù)進(jìn)行重置。
實(shí)現(xiàn)代碼:
<template> <div class="box"> <h1>石頭剪刀布</h1> <div class="boxli"> <div class="top"> <p> 你已獲勝了<span class="id">{{ id }}</span> 次 </p> <div class="liimg"> <img src="@/assets/logo.gif" id="img" /> <span>{{ text }}</span> <img :src="list[index].image" alt="" /> </div> </div> <div class="bottom"> <img v-for="item in list" :key="item.id" :src="item.image" @click="add(item.id)" /> </div> <div class="btn" @click="btn">再來(lái)一局</div> </div> </div> </template> <script> export default { data() { return { list: [ { id: 1, image: require("@/assets/one.png"), }, { id: 2, image: require("@/assets/two.png"), }, { id: 3, image: require("@/assets/three.png"), }, ], index: 0, setInter: "", text: "", id: 0, }; }, mounted() { this.SetInter(); }, methods: { SetInter() { this.setInter = setInterval(() => { this.index++; if (this.index === 3) { this.index = 0; } }, 100); }, add(id) { let img = document.getElementById("img"); if (img.src === "http://localhost:8080/img/logo.b990c710.gif") { img.src = this.list[id - 1].image; clearInterval(this.setInter); switch (this.index) { case 0: if (id - 1 === 0) { this.text = "平局了"; } else if (id - 1 === 1) { this.text = "獲勝了"; } else if (id - 1 === 2) { this.text = "失敗了"; } break; case 1: if (id - 1 === 0) { this.text = "失敗了"; } else if (id - 1 === 1) { this.text = "平局了"; } else if (id - 1 === 2) { this.text = "獲勝了"; } break; case 2: if (id - 1 === 0) { this.text = "獲勝了"; } else if (id - 1 === 1) { this.text = "失敗了"; } else if (id - 1 === 2) { this.text = "平局了"; } break; } if (this.text === "獲勝了") { this.id++; console.log(this.id); } } }, btn() { let img = document.getElementById("img"); if (img.src !== "http://localhost:8080/img/logo.b990c710.gif") { img.src = require("@/assets/logo.gif"); this.SetInter(); this.text = ""; } }, }, }; </script> <style lang="scss" scoped> .box { text-align: center; h1 { margin: 20px 0; } .boxli { width: 800px; height: 550px; border: 1px solid red; margin: 0 auto; .top { img { width: 200px; height: 200px; } .liimg { display: flex; justify-content: center; align-items: center; } span { display: inline-block; width: 100px; color: red; text-align: center; } .id { width: 30px; margin-top: 20px; } } } .btn { width: 200px; height: 50px; background-image: linear-gradient(to right, #ff00ad, #f09876); margin: 0 auto; line-height: 50px; color: #fff; border-radius: 10px; } } </style>
總結(jié):
到此這篇關(guān)于如何基于Vue制作一個(gè)猜拳小游戲的文章就介紹到這了,更多相關(guān)Vue猜拳小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
element table組件內(nèi)容換行的實(shí)現(xiàn)方案
這篇文章主要介紹了element table組件內(nèi)容換行的實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Vue代理報(bào)錯(cuò)404問(wèn)題及解決(vue配置proxy)
這篇文章主要介紹了Vue代理報(bào)錯(cuò)404問(wèn)題及解決(vue配置proxy),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12vue登錄頁(yè)面設(shè)置驗(yàn)證碼input框的方法
這篇文章主要為大家詳細(xì)介紹了vue登錄頁(yè)面設(shè)置驗(yàn)證碼input框的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04vue3關(guān)于RouterView插槽和過(guò)渡動(dòng)效
這篇文章主要介紹了vue3關(guān)于RouterView插槽和過(guò)渡動(dòng)效,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06vue項(xiàng)目element UI input框掃碼槍掃描過(guò)快出現(xiàn)數(shù)據(jù)丟失問(wèn)題及解決方案
這篇文章主要介紹了vue項(xiàng)目element UI input框掃碼槍掃描過(guò)快出現(xiàn)數(shù)據(jù)丟失問(wèn)題,輸入框要掉兩個(gè)接口,根據(jù)第一個(gè)驗(yàn)證接口返回的code,彈不同的框,點(diǎn)擊彈框確認(rèn)再掉第二個(gè)接口,需要的朋友可以參考下2022-12-12Vue+ECharts實(shí)現(xiàn)中國(guó)地圖的繪制及各省份自動(dòng)輪播高亮顯示
這篇文章主要介紹了Vue+ECharts實(shí)現(xiàn)中國(guó)地圖的繪制以及拖動(dòng)、縮放和各省份自動(dòng)輪播高亮顯示,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12Vue 項(xiàng)目中如何使用fullcalendar 時(shí)間段選擇插件(類(lèi)似課程表格)
最近完成一個(gè)項(xiàng)目,需要選擇一個(gè)會(huì)議室,但是最好能夠通過(guò)在圖上顯示出該 會(huì)議室在某某時(shí)間段內(nèi)已經(jīng)被預(yù)定了,初看這個(gè)功能感覺(jué)很棘手,仔細(xì)分析下實(shí)現(xiàn)起來(lái)還是挺容易的,下面通過(guò)示例代碼講解Vue項(xiàng)目中使用fullcalendar時(shí)間段選擇插件,感興趣的朋友一起看看吧2024-07-07通過(guò)cordova將vue項(xiàng)目打包為webapp的方法
這篇文章主要介紹了通過(guò)cordova將vue項(xiàng)目打包為webapp的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02淺析Vue3如何實(shí)現(xiàn)頁(yè)面訪(fǎng)問(wèn)攔截
在Vue3中,頁(yè)面訪(fǎng)問(wèn)攔截(Navigation?Guards)是一種常見(jiàn)的路由控制機(jī)制,那么Vue3具體是如何實(shí)現(xiàn)這一功能的呢,下面就跟隨小編一起來(lái)學(xué)習(xí)一下吧2024-03-03