- ขั้นตอนที่ 1: การเขียนโครงสร้าง HTML
เริ่มต้นโดยการสร้างโครงสร้างพื้นฐานของ HTML ที่จะประกอบด้วย <div> สำหรับกระดานเกมและแต่ละการ์ดที่จะถูกสร้างโดย JavaScriptขั้นตอนที่ 2: การออกแบบ CSSโค้ด: เลือกทั้งหมด
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Card Matching Game</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="game-board" id="gameBoard"> <!-- การ์ดจะถูกสร้างขึ้นที่นี่ --> </div> <script src="script.js"></script> </body> </html>
ใช้ CSS เพื่อออกแบบการ์ดและกระดานเกม เพื่อให้การ์ดมีลักษณะที่เหมาะสมสำหรับเกมจับคู่
ขั้นตอนที่ 3: เขียน JavaScript เพื่อเพิ่มฟังก์ชันการทำงานโค้ด: เลือกทั้งหมด
/* styles.css */ body { display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f0f0f0; margin: 0; font-family: Arial, sans-serif; } .game-board { display: grid; grid-template-columns: repeat(4, 100px); grid-gap: 10px; } .card { width: 100px; height: 100px; background-color: #2c3e50; border-radius: 10px; display: flex; justify-content: center; align-items: center; font-size: 24px; color: white; cursor: pointer; } .card.flipped { background-color: #ecf0f1; color: #2c3e50; }
ใช้ JavaScript เพื่อสร้างการ์ด และเพิ่มฟังก์ชันการ์ดสำหรับการพลิกและตรวจสอบการจับคู่
อธิบายแต่ละส่วนโค้ด: เลือกทั้งหมด
// script.js document.addEventListener('DOMContentLoaded', () => { const gameBoard = document.getElementById('gameBoard'); const cardsArray = [ 'A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'E', 'E', 'F', 'F', 'G', 'G', 'H', 'H' ]; let firstCard = null; let secondCard = null; let lockBoard = false; function createCard(value) { const card = document.createElement('div'); card.classList.add('card'); card.dataset.value = value; card.textContent = value; card.addEventListener('click', flipCard); return card; } function flipCard() { if (lockBoard) return; if (this === firstCard) return; this.classList.add('flipped'); if (!firstCard) { firstCard = this; return; } secondCard = this; lockBoard = true; checkForMatch(); } function checkForMatch() { if (firstCard.dataset.value === secondCard.dataset.value) { disableCards(); } else { unflipCards(); } } function disableCards() { firstCard.removeEventListener('click', flipCard); secondCard.removeEventListener('click', flipCard); resetBoard(); } function unflipCards() { setTimeout(() => { firstCard.classList.remove('flipped'); secondCard.classList.remove('flipped'); resetBoard(); }, 1000); } function resetBoard() { [firstCard, secondCard, lockBoard] = [null, null, false]; } function shuffle(array) { array.sort(() => Math.random() - 0.5); } function initGame() { shuffle(cardsArray); cardsArray.forEach(value => { const card = createCard(value); gameBoard.appendChild(card); }); } initGame(); });
- HTML: ในส่วน HTML เราสร้างโครงสร้างพื้นฐานของเกม โดยมี <div> ที่มี id เป็น gameBoard ซึ่งจะเป็นตำแหน่งที่การ์ดจะถูกสร้างและแสดงผล
- CSS: CSS ใช้ในการออกแบบการ์ดและกระดานเกม ให้มีลักษณะที่เหมาะสมสำหรับเกมจับคู่ การ์ดมีสีพื้นหลังเข้ม และเมื่อถูกพลิกจะมีสีพื้นหลังอ่อนขึ้นพร้อมข้อความเป็นสีเข้ม
- JavaScript: ใน JavaScript เรามีฟังก์ชันหลักที่จัดการกับการทำงานของเกม
- createCard: สร้างการ์ดแต่ละใบและเพิ่มฟังก์ชันการคลิกเพื่อพลิกการ์ด
- flipCard: จัดการกับการคลิกการ์ดและการตรวจสอบการคลิก
- checkForMatch: ตรวจสอบว่าการ์ดที่พลิกมีคู่หรือไม่
- disableCards และ unflipCards: จัดการกับการพลิกการ์ดในกรณีที่ตรวจพบคู่หรือไม่ตรงกัน
- shuffle: สับเปลี่ยนลำดับการ์ดเพื่อให้เป็นการ์ดที่สุ่ม
- initGame: เริ่มเกมโดยการสร้างและแสดงการ์ดทั้งหมด
ตอนกดผิด
การสร้างเกมจับคู่การ์ดด้วย HTML, CSS, และ JavaScript เป็นโปรเจกต์ที่น่าสนใจสำหรับผู้ที่ต้องการฝึกฝนทักษะการเขียนโปรแกรมพื้นฐานได้อย่างดี เราใช้ HTML เพื่อสร้างโครงสร้างพื้นฐานของเกม และ CSS เพื่อออกแบบการ์ดและกระดานเกมให้มีลักษณะที่เหมาะสม ส่วน JavaScript ใช้ในการเพิ่มฟังก์ชันที่จำเป็น เช่น การพลิกการ์ดและตรวจสอบความเท่ากันของการ์ดที่พลิก โดยมีการใช้ฟังก์ชันเพื่อสับเปลี่ยนลำดับการ์ดเพื่อเพิ่มความน่าสนใจในการเล่นเกมด้วยความสามารถในการสร้างเกมด้วยภาษาต่างๆ
แหล่าอ้างอิง
https://developer.mozilla.org/en-US/docs/Web/HTML
https://developer.mozilla.org/en-US/docs/Web/CSS