最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何基于Vue制作一個猜拳小游戲

 更新時間:2023年01月05日 10:12:10   作者:清風(fēng)?與我  
Vue.js作為目前最熱門最具前景的前端框架之一,其提供了一種幫助我們快速構(gòu)建并開發(fā)前端項目的新的思維模式,下面這篇文章主要給大家介紹了關(guān)于如何基于Vue制作一個猜拳小游戲的相關(guān)資料,需要的朋友可以參考下

前言:

在工作學(xué)習(xí)之余玩一會游戲既能帶來快樂,還能緩解生活壓力,跟隨此文一起制作一個小游戲吧。

描述:
石頭剪子布,是一種猜拳游戲。起源于中國,然后傳到日本、朝鮮等地,隨著亞歐貿(mào)易的不斷發(fā)展它傳到了歐洲,到了近現(xiàn)代逐漸風(fēng)靡世界。簡單明了的規(guī)則,使得石頭剪子布沒有任何規(guī)則漏洞可鉆,單次玩法比拼運氣,多回合玩法比拼心理博弈,使得石頭剪子布這個古老的游戲同時用于“意外”與“技術(shù)”兩種特性,深受世界人民喜愛。
游戲規(guī)則:石頭打剪刀,布包石頭,剪刀剪布。
現(xiàn)在,需要你寫一個程序來判斷石頭剪子布游戲的結(jié)果。

項目效果展示:

對應(yīng)素材:

代碼實現(xiàn)思路:

準(zhǔn)備對應(yīng)的素材用于界面效果展示。

在盒子中上面設(shè)置兩個 img 標(biāo)簽,src 用動態(tài)展示,左側(cè)代表玩家,右側(cè)代表電腦。

在JS中設(shè)置定時器,每隔0.1秒切換背景圖,達到一個閃爍的效果。

給代表玩家的image動態(tài)賦值加載中的動畫,同時在頁面下方實現(xiàn)選擇的區(qū)域,讓用戶能夠點擊。

實現(xiàn)圖片的點擊事件,當(dāng)點擊時修改上方代表玩家圖片的src值,同時停止右側(cè)代表電腦的圖片的閃爍,并通過下標(biāo)判斷電腦的選擇。

在給玩家圖片賦值的同時,停止電腦方圖片的閃爍,獲取其src,判斷哪方獲勝并在頁面進行顯示。

在頁面底部實現(xiàn)再來一次按鈕,點擊時將頁面數(shù)據(jù)進行重置。

實現(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">再來一局</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制作一個猜拳小游戲的文章就介紹到這了,更多相關(guān)Vue猜拳小游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue項目中使用AES實現(xiàn)密碼加密解密(ECB和CBC兩種模式)

    vue項目中使用AES實現(xiàn)密碼加密解密(ECB和CBC兩種模式)

    這篇文章主要介紹了vue項目中使用AES實現(xiàn)密碼加密解密的方法,主要是通過ecb和cbc兩種模式,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • vue如何在main.js中配置全局的通用公共組件

    vue如何在main.js中配置全局的通用公共組件

    這篇文章主要介紹了vue如何在main.js中配置全局的通用公共組件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue如何動態(tài)生成andv圖標(biāo)

    vue如何動態(tài)生成andv圖標(biāo)

    這篇文章主要介紹了vue如何動態(tài)生成andv圖標(biāo)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • v-if 導(dǎo)致 elementui 表單校驗失效問題解決方案

    v-if 導(dǎo)致 elementui 表單校驗失效問題解決方案

    在使用 elementui 表單的過程中,某些表單項需要通過 v-if 來判斷是否展示,但是這些表單項出現(xiàn)了檢驗失效的問題,今天小編給大家介紹v-if 導(dǎo)致 elementui 表單校驗失效問題解決方案,感興趣的朋友一起看看吧
    2024-01-01
  • vue中@click綁定事件點擊不生效的解決

    vue中@click綁定事件點擊不生效的解決

    這篇文章主要介紹了vue中@click綁定事件點擊不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue 3自定義指令開發(fā)的相關(guān)總結(jié)

    Vue 3自定義指令開發(fā)的相關(guān)總結(jié)

    這篇文章主要介紹了Vue 3自定義指令開發(fā)的相關(guān)總結(jié),幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • 解決vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效問題

    解決vue2.0 element-ui中el-upload的before-upload方法返回false時submit(

    這篇文章主要介紹了vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效的解決方法,這里需要主要項目中用的element-ui是V1.4.3,感興趣的朋友參考下吧
    2018-08-08
  • 深入淺析Vue 中 ref 的使用

    深入淺析Vue 中 ref 的使用

    在之前的前端開發(fā)中,為了實現(xiàn)我們的需求,通常采用的方案是通過 JS/Jquery 直接操縱頁面的 DOM 元素,得益于 Jquery 對于 DOM 元素優(yōu)異的操作能力,我們可以很輕易的對獲取到的 DOM 元素進行操作。這篇文章主要介紹了Vue 中 ref 的使用 ,需要的朋友可以參考下
    2019-04-04
  • vue router 跳轉(zhuǎn)時打開新頁面的示例方法

    vue router 跳轉(zhuǎn)時打開新頁面的示例方法

    這篇文章主要介紹了vue router 跳轉(zhuǎn)時打開新頁面的示例方法,本文通過示例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • vue1.0和vue2.0的watch監(jiān)聽事件寫法詳解

    vue1.0和vue2.0的watch監(jiān)聽事件寫法詳解

    今天小編就為大家分享一篇vue1.0和vue2.0的watch監(jiān)聽事件寫法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論

清河县| 孙吴县| 搜索| 常山县| 且末县| 黑水县| 安达市| 饶平县| 准格尔旗| 荆门市| 昂仁县| 积石山| 五指山市| 顺义区| 北辰区| 额尔古纳市| 登封市| 开江县| 嘉黎县| 措勤县| 青神县| 南丹县| 许昌市| 宁德市| 尚志市| 澳门| 龙海市| 应城市| 台州市| 大同市| 墨脱县| 咸宁市| 江山市| 景宁| 鄂伦春自治旗| 垦利县| 旅游| 马关县| 石门县| 绥中县| 合作市|