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

HTML+JS實現(xiàn)猜拳游戲的示例代碼

 更新時間:2022年04月01日 08:35:10   作者:海擁  
這篇文章主要為大家詳細介紹了如何利用HTML+CSS+JS編寫一個猜拳游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

效果圖

游戲可以通過這個鏈接進入

關(guān)于JS構(gòu)建過程

首先,我創(chuàng)建了一個對象,其中包含每種可能性的文本格式(石頭、紙、剪刀),然后將圖像源也添加到該對象中。

在我制作的 HTML 中:

  • playerChoiceImg
  • playerChoiceTxt
  • computerChoiceImg
  • computerChoiceTxt

能夠修改其中的每個內(nèi)容。

然后創(chuàng)建了一個points變量,它將存儲每個玩家(玩家和計算機)的分數(shù)。

之后,我需要一個介于 1 和 3 之間的隨機生成的數(shù)字來指示計算機的選擇。

// 變量
const choices = [{
        id: 1,
        name: "石頭",
        image: "./img/rock.png"
    },{
        id: 2,
        name: "布",
        image: "./img/paper.png"
    },{
        id: 3,
        name: "剪刀",
        image: "./img/scissors.png"
    }]

let playerPoints = document.querySelector(".playerPoints")
let computerPoints = document.querySelector(".computerPoints")
let playerChoiceImg = document.querySelector("#playerChoiceImg")
let playerChoiceTxt = document.querySelector("#playerChoiceTxt")
let computerChoiceImg = document.querySelector("#computerChoiceImg")
let computerChoiceTxt = document.querySelector("#computerChoiceTxt")
let buttons = document.querySelectorAll(".btn")
let points = [0, 0]
let randomNumber;

老實說我給這些對象一個ID,但沒有在項目中使用它們。我只是在選擇時使用了每個索引。

添加事件監(jiān)聽器

這里我使用 forEach() 方法將事件監(jiān)聽器附加到按鈕上。

這個事件監(jiān)聽器將完成大部分工作。

// 事件監(jiān)聽
buttons.forEach((button) => {
    button.addEventListener("click", () => {
        if (button.textContent === "石頭") {
            playerChoiceImg.src = choices[0].image;
            playerChoiceTxt.textContent = choices[0].name;
        } else if (button.textContent === "布") {
            playerChoiceImg.src = choices[1].image;
            playerChoiceTxt.textContent = choices[1].name;
        } else if (button.textContent === "剪刀") {
            playerChoiceImg.src = choices[2].image;
            playerChoiceTxt.textContent = choices[2].name;
        }
        getComputerChoice();
        console.log(points);
    })
})

正如大家在上面代碼中看到的那樣,我使用 if-else 語句以及根據(jù)按鈕的 textContent 來定義哪個按鈕執(zhí)行什么操作。

if-else 語句:

如果按鈕本身有“石頭”文字,那么會在playerChoiceTxt中顯示“石頭”,同時將playerChoiceImg的圖像源更改為存儲在對象中的圖像源,其他 2 個也是如此。

之后,我創(chuàng)建了計算機的選擇功能,如下所示:

// 選擇功能
function getComputerChoice() {
    computerChoiceImg.src = "./img/gif.gif"
    setTimeout(() => {
        randomNumber = Math.floor(Math.random() * 3);
        computerChoiceImg.src = choices[randomNumber].image;
        computerChoiceTxt.textContent = choices[randomNumber].name;
        gameRules();
        playerPoints.textContent = points[0];
        computerPoints.textContent = points[1];
        whoWon();
    }, 1000);
}

1.我用石頭、剪紙和剪刀的 3 幅圖創(chuàng)建了一個循環(huán) gif。

2.然后添加了一個setTimeout,它負責(zé)動畫的時長。

3.在里面我讓函數(shù)創(chuàng)建一個介于 0-2 之間的隨機數(shù),這是選擇對象中的元素編號,這將指示計算機的選擇。

4.將文本和圖像內(nèi)容更改為所選對象元素的名稱和圖像源。

5.然后運行 ??gameRules() 函數(shù)(我們稍后會談到)。

6.更新了每個玩家點數(shù)指示器的文本內(nèi)容。

7.檢查每個函數(shù)調(diào)用的分數(shù),以檢查是否有人獲勝。(whoWon() 函數(shù))

函數(shù) gameRules()

function gameRules() {
    if (playerChoiceTxt.textContent === choices[0].name && computerChoiceTxt.textContent === choices[1].name) {
        points[1]++;
    } else if (playerChoiceTxt.textContent === choices[1].name && computerChoiceTxt.textContent === choices[2].name) {
        points[1]++;
    } else if (playerChoiceTxt.textContent === choices[2].name && computerChoiceTxt.textContent === choices[0].name) {
        points[1]++;
    } else if (playerChoiceTxt.textContent === computerChoiceTxt.textContent) {
        console.log("draw");
    } else {
        points[0]++;
    }
}

這個函數(shù)檢查玩家的選擇并檢查計算機選擇是否可以戰(zhàn)勝它。我已經(jīng)根據(jù)游戲規(guī)則設(shè)置了這些 if-else 語句。如果計算機贏了,則計算機的分數(shù)加 1,否則玩家的分數(shù)加 1。

函數(shù) whoWon()

又是 if-else 語句

function whoWon() {
    if (points[0] === 10) {
        alert("你干掉了AI成功取得勝利!")
        points = [0, 0];
    } else if (points[1] === 10) {
        alert("你被人工智能打敗了!")
        points = [0, 0];
    }
}

最后只要檢查點數(shù)組是否有人已經(jīng)達到 10 分,如果是,則將這些點重置為其初始值。

完整代碼

以上就是HTML+JS實現(xiàn)猜拳游戲的示例代碼的詳細內(nèi)容,更多關(guān)于JS猜拳的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS實現(xiàn)水平移動與垂直移動動畫

    JS實現(xiàn)水平移動與垂直移動動畫

    這篇文章主要為大家詳細介紹了JS實現(xiàn)水平移動與垂直移動動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • input+select(multiple) 實現(xiàn)下拉框輸入值

    input+select(multiple) 實現(xiàn)下拉框輸入值

    昨天做一個網(wǎng)站時,需要實現(xiàn)下拉框能夠輸入,從功能上講是要實現(xiàn)用戶在文本框輸入值時,能夠從后讀出數(shù)據(jù)彈出下拉選項
    2009-05-05
  • JavaScript 保存數(shù)組到Cookie的代碼

    JavaScript 保存數(shù)組到Cookie的代碼

    大部分的瀏覽器一個網(wǎng)站只支持保存20個Cookie,超過20個Cookie,舊的Cookie會被最新的Cookie代替。那么如果要有超過20個Cookie要保存只能將Cookie存為數(shù)組然后保存到Cookie。
    2010-04-04
  • JS實現(xiàn)頁面跳轉(zhuǎn)與刷新的方法匯總

    JS實現(xiàn)頁面跳轉(zhuǎn)與刷新的方法匯總

    這篇文章主要給大家介紹了關(guān)于JS實現(xiàn)頁面跳轉(zhuǎn)與刷新的方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用Chart.js圖表庫制作漂亮的響應(yīng)式表單

    使用Chart.js圖表庫制作漂亮的響應(yīng)式表單

    數(shù)據(jù)包圍著我們。雖然搜索引擎和其他應(yīng)用都對基于文本方式表示的數(shù)據(jù)偏愛有加,但人們發(fā)現(xiàn)可視化是更容易理解的一種方式。今年初,SitePoint 發(fā)表了 Aurelio 的文章《 Chart.js簡介》。在深入研究 Chart.js 的功能后,本文將會講解這篇簡介的一些重點。
    2015-10-10
  • javascript 圖片輪換 函數(shù)化繼承

    javascript 圖片輪換 函數(shù)化繼承

    一直讓我困擾的是,我不知道如何去讓這個效果 自動播放,或者費了很多周折。這可能叫初始化。
    2010-05-05
  • javascript 兼容鼠標滾輪事件

    javascript 兼容鼠標滾輪事件

    瀏覽地圖時,使用鼠標滾輪來放大和縮小。即用到了滾輪事件。
    2009-04-04
  • easyui-datagrid特殊字符不能顯示的處理方法

    easyui-datagrid特殊字符不能顯示的處理方法

    下面小編就為大家?guī)硪黄猠asyui-datagrid特殊字符不能顯示的處理方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 產(chǎn)制造追溯系統(tǒng)之通過微信小程序?qū)崿F(xiàn)移動端報表平臺

    產(chǎn)制造追溯系統(tǒng)之通過微信小程序?qū)崿F(xiàn)移動端報表平臺

    這篇文章主要介紹了產(chǎn)制造追溯系統(tǒng)-通過微信小程序?qū)崿F(xiàn)移動端報表平臺 ,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • 數(shù)組方法解決JS字符串連接性能問題有爭議

    數(shù)組方法解決JS字符串連接性能問題有爭議

    大多數(shù)情況下,加法運算符是首選;如果用戶主要使用IE6或7,并且字符串大小較大或數(shù)量較多時,那么數(shù)組技術(shù)就很值得。
    2011-01-01

最新評論

贵阳市| 崇义县| 黄大仙区| 色达县| 仲巴县| 尚志市| 手机| 乌兰察布市| 奉化市| 新密市| 进贤县| 白水县| 名山县| 铜川市| 忻城县| 平原县| 蒲江县| 尼勒克县| 舟曲县| 沾益县| 开原市| 黎平县| 珠海市| 双流县| 福泉市| 承德市| 扶绥县| 高要市| 革吉县| 图木舒克市| 桃源县| 乐都县| 岑巩县| 诸城市| 盐城市| 济阳县| 九江市| 报价| 江华| 京山县| 鄄城县|