介紹
各位開發者大家好!我很高興分享我的最新項目:經典的井字遊戲。這個專案是練習 JavaScript 技能的好方法,特別是在處理遊戲邏輯、DOM 操作和使用者互動方面。無論您是剛開始使用 JavaScript 還是正在尋找有趣的挑戰,這款 Tic-Tac-Toe 遊戲都是磨練您技能的完美選擇。
項目概況
Tic-Tac-Toe 遊戲 是流行的兩人遊戲的基於網路的實現。該專案展示瞭如何創建互動元素、管理遊戲狀態以及實現簡單的人工智慧邏輯。該遊戲被設計為完全響應式,使其可以在桌面和行動裝置上玩。
特徵
- 雙人遊戲模式:在同一裝置上與朋友一起玩。
- 遊戲邏輯:每次移動後自動檢查獲勝者或平局。
- 重置功能:隨時輕鬆重新啟動遊戲。
- 響應式設計:遊戲佈局適應不同的螢幕尺寸,在所有裝置上提供一致的體驗。
使用的技術
- HTML:建構遊戲介面。
- CSS:設定遊戲板、按鈕和其他 UI 元素的樣式。
- JavaScript:管理遊戲邏輯,包括玩家回合、獲勝條件和重置遊戲。
專案結構
以下是專案結構的快速瀏覽:
Tic-Tac-Toe/ ├── index.html ├── styles.css └── script.js
- index.html:包含 Tic-Tac-Toe 遊戲的 HTML 結構。
- styles.css:包含遊戲板和響應式設計的 CSS 樣式。
- script.js:處理遊戲邏輯,包括玩家回合和獲勝條件。
安裝
要開始該項目,請按照以下步驟操作:
-
複製儲存庫:
git clone https://github.com/abhishekgurjar-in/Tic-Tac-Toe.git
-
開啟專案目錄:
cd Tic-Tac-Toe
-
運行項目:
- 在網頁瀏覽器中開啟index.html 檔案即可開始玩井字遊戲。
用法
- 在網頁瀏覽器中開啟網站。
- 點選網格中的任一空白單元格開始遊戲。
- 輪流在單元格中放置你的標記(X 或 O)。
- 查看結果:如果出現獲勝組合,遊戲將宣布獲勝;如果所有單元格都填滿,則遊戲將宣布平局。
- 重置遊戲:點選「重置遊戲」按鈕開始新遊戲。
程式碼說明
超文本標記語言
index.html 檔案設定 Tic-Tac-Toe 遊戲的結構,包括遊戲板和控制按鈕。這是一個片段:
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tic-Tac-Toe Game</title> <link rel="stylesheet" href="style.css"> <script src="script.js" defer></script> <div class="msg-container hide"> <p id="msg">Winner</p> <button id="new-btn">New Game</button> </div> <main> <h1 id="Tic-Tac-Toe">Tic Tac Toe</h1> <div class="container"> <div class="game"> <button class="box"></button> <button class="box"></button> <button class="box"></button> <button class="box"></button> <button class="box"></button> <button class="box"></button> <button class="box"></button> <button class="box"></button> <button class="box"></button> </div> </div> <button id="reset-btn">Reset Game</button> </main> <div class="footer"> <p>Made with ❤️ by Abhishek Gurjar</p> </div>
CSS
styles.css 檔案設計 Tic-Tac-Toe 遊戲的樣式,包括網格佈局、按鈕和響應式設計。以下是一些關鍵樣式:
* { margin: 0; padding: 0; } body { background-color: #548687; text-align: center; } .container { height: 70vh; display: flex; justify-content: center; align-items: center; } .game { height: 60vmin; width: 60vmin; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 1.5vmin; } .box { height: 18vmin; width: 18vmin; border-radius: 1rem; border: none; box-shadow: 0 0 1rem rgba(0, 0, 0, 0.3); font-size: 8vmin; color: #b0413e; background-color: #ffffc7; } #reset-btn { padding: 1rem; font-size: 1.25rem; background-color: #191913; color: #fff; border-radius: 1rem; border: none; } #new-btn { padding: 1rem; font-size: 1.25rem; background-color: #191913; color: #fff; border-radius: 1rem; border: none; } #msg { color: #ffffc7; font-size: 5vmin; } .msg-container { height: 100vmin; display: flex; justify-content: center; align-items: center; flex-direction: column; gap: 4rem; } .hide { display: none; } .footer { margin: 50px; text-align: center; color: white; }
JavaScript
script.js 檔案管理遊戲邏輯,包括處理玩家回合、檢查獲勝者以及重置遊戲。這是一個片段:
let boxes = document.querySelectorAll(".box"); let resetBtn = document.querySelector("#reset-btn"); let newGameBtn = document.querySelector("#new-btn"); let msgContainer = document.querySelector(".msg-container"); let msg = document.querySelector("#msg"); let turnO = true; //playerX, playerO let count = 0; //To Track Draw const winPatterns = [ [0, 1, 2], [0, 3, 6], [0, 4, 8], [1, 4, 7], [2, 5, 8], [2, 4, 6], [3, 4, 5], [6, 7, 8], ]; const resetGame = () => { turnO = true; count = 0; enableBoxes(); msgContainer.classList.add("hide"); }; boxes.forEach((box) => { box.addEventListener("click", () => { if (turnO) { //playerO box.innerText = "O"; turnO = false; } else { //playerX box.innerText = "X"; turnO = true; } box.disabled = true; count++; let isWinner = checkWinner(); if (count === 9 && !isWinner) { gameDraw(); } }); }); const gameDraw = () => { msg.innerText = `Game was a Draw.`; msgContainer.classList.remove("hide"); disableBoxes(); }; const disableBoxes = () => { for (let box of boxes) { box.disabled = true; } }; const enableBoxes = () => { for (let box of boxes) { box.disabled = false; box.innerText = ""; } }; const showWinner = (winner) => { msg.innerText = `Congratulations, Winner is ${winner}`; msgContainer.classList.remove("hide"); disableBoxes(); }; const checkWinner = () => { for (let pattern of winPatterns) { let pos1Val = boxes[pattern[0]].innerText; let pos2Val = boxes[pattern[1]].innerText; let pos3Val = boxes[pattern[2]].innerText; if (pos1Val != "" && pos2Val != "" && pos3Val != "") { if (pos1Val === pos2Val && pos2Val === pos3Val) { showWinner(pos1Val); return true; } } } }; newGameBtn.addEventListener("click", resetGame); resetBtn.addEventListener("click", resetGame);
現場演示
您可以在這裡查看 Tic-Tac-Toe 遊戲的現場演示。
結論
建立這款 Tic-Tac-Toe 遊戲是一次愉快的體驗,它讓我能夠練習 JavaScript,尤其是在創建互動式 Web 應用程式方面。我希望這個專案能夠激勵您建立自己的遊戲並探索 JavaScript 的可能性。快樂編碼!
製作人員
這個專案是我不斷提升 Web 開發技能的一部分,專注於 JavaScript 和 DOM 操作。
作者
-
阿布舍克·古賈爾
- GitHub 簡介
以上是建立井字遊戲網站的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在本週的新聞中,Wikipedia有助於識別三個慢單擊處理程序,Google Earth進入網絡,CSS中的SVG屬性獲得了更多的支持,以及在殭屍cookies的情況下該怎麼做。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。