HTML+JS實現(xiàn)猜拳游戲的示例代碼
效果圖
游戲可以通過這個鏈接進入
關于JS構建過程
首先,我創(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,它負責動畫的時長。
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ī)則設置了這些 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)容,更多關于JS猜拳的資料請關注腳本之家其它相關文章!
相關文章
javascript+css3開發(fā)打氣球小游戲完整代碼
這是一個簡單但是印象深刻的小游戲,打氣球小游戲的實現(xiàn)代碼,主要基于js和css3,基于css3畫氣球,具體實現(xiàn)代碼大家參考下本文2017-11-11在DWR中實現(xiàn)直接獲取一個JAVA類的返回值的兩種方法
本文主要介紹了在DWR中實現(xiàn)直接獲取一個JAVA類的返回值的兩種方法,具有一定的參考價值,下面跟著小編一起來看下吧2016-12-12Three.js+React實現(xiàn)3D文字懸浮效果
這篇文章主要介紹了如何利用Three.js+React制作出神奇的3D文字懸浮效果,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下2022-03-03JavaScript根據(jù)CSS的Media Queries來判斷瀏覽設備的方法
這篇文章主要介紹了JavaScript根據(jù)CSS的Media Queries來判斷瀏覽設備的方法,主要思路是通過CSS Media Queries改變一個類的某個屬性值(例如 z-index),然后用JavaScript讀取判斷,需要的朋友可以參考下2016-05-05