เกมส์ X,O

นายจักรกริช นนทะสร วฟ.1/1 รหัส0005

คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมไฟฟ้า

วิชา : 04000104 การโปรเเกรมคอมพิวเตอร์

1.ความเป็นมา

เกม XO หรือ Tic-Tac-Toe เป็นเกมกระดานที่เรียบง่ายแต่สนุกสนาน ผู้เล่นสองคนผลัดกันใส่เครื่องหมาย X หรือ O ลงในช่องว่าง 3×3 จนกว่าจะมีผู้ใดผู้หนึ่งเรียงเครื่องหมายของตนเองได้ 3 อันในแนวตรง แนวนอน หรือแนวทแยงเกมนี้เป็นที่นิยมเล่นกันทั่วโลกมาเป็นเวลานาน และมักใช้เป็นตัวอย่างในการสอนการเขียนโปรแกรมเบื้องต้น เนื่องจากมีกฎที่เข้าใจง่ายและสามารถนำไปประยุกต์ใช้กับหลักการทางคอมพิวเตอร์ได้หลากหลาย

2.วัตถุประสงค์

2.1 เพื่อศึกษาและทำความเข้าใจเกมกับการสร้างเกมด้วยภาษา HTML

2.2เพื่อให้นักศึกษานำโค้ดที่ได้สามารถนำไปประยุกต์พัฒนาหรือต่อยอดต่อไปได้

2.3เพื่อศึกษาและประยุกต์ใช้เครื่องมือและแพลตฟอร์มต่างๆ ในการสร้างเขียนโปรอกรม เช่น การสร้างเกมด้วยภาษา HTML

3.ขอบเขตการทำงาน

3.1สร้างตาราง 3×3 ด้วย HTMLใช้ CSS ในการจัดรูปแบบให้ดูสวยงามและใช้งานง่าย

3.2เขียนโค้ด JavaScript เพื่อควบคุมลำดับการเล่นของผู้เล่นทั้งสองตรวจสอบผลลัพธ์ (ชนะ, เสมอ, หรือยังเล่นต่อ)

4.ประโยชน์ที่คิดว่าจะได้รับ

4.1 เข้าใจการใช้ HTML, CSS, และ JavaScript ในการพัฒนาเว็บแอปพลิเคชัน

4.2สร้างเกมที่สามารถเล่นได้จริงและมีความสนุก ทำให้มีแรงบันดาลใจในการเรียนรู้

4.3 การแก้ปัญหาระหว่างการสร้างเกมส์

5.ความรู้ที่เกี่ยวข้อง

5.1 Visual Studio Code (index.html )

หน้า index.html เป็นชื่อที่ใช้กันทั่วไปสำหรับหน้าเริ่มต้นที่แสดงบนเว็บไซต์ หากไม่มีการระบุหน้าอื่นเมื่อผู้เยี่ยมชมร้องขอไซต์ กล่าวอีกนัยหนึ่ง index.html คือชื่อที่ใช้สำหรับโฮมเพจของเว็บไซต์

5.2 Main.css

เป็นไฟล์ที่อธิบายวิธีแสดงองค์ประกอบ HTML บนหน้าจอ กระดาษ ฯลฯ ด้วย HTML คุณสามารถกำหนดสไตล์ที่ฝังไว้หรือสไตล์ที่สามารถกำหนดได้ในสไตล์ชีตภายนอก สำหรับการฝังสไตล์ \ </style> มีการใช้แท็ก สไตล์ชีตภายนอกถูกจัดเก็บไว้ในไฟล์ที่มีนามสกุล .CSS ด้วย CSS ภายนอก คุณสามารถรวมไว้ในหน้า HTML หลายหน้าเพื่ออัปเดตสไตล์ของหน้าเหล่านั้น แม้แต่ไฟล์ CSS ไฟล์เดียวก็สามารถใช้จัดรูปแบบเว็บไซต์ที่สมบูรณ์ได้

5.3 Main.js

JS (JavaScript) คือไฟล์ที่มีโค้ด JavaScript สำหรับดำเนินการบนหน้าเว็บ ไฟล์ JavaScript ถูกจัดเก็บด้วยนามสกุล .JS ภายในเอกสาร HTML คุณสามารถฝังโค้ด JavaScript โดยใช้ปุ่ม \ </script> แท็กหรือรวมไฟล์ JS คล้ายกับไฟล์ CSS ไฟล์ JS สามารถรวมไว้ในเอกสาร HTML หลายฉบับเพื่อให้โค้ดกลับมาใช้ใหม่ได้JavaScriptสามารถใช้เพื่อจัดการ HTML DOM

5.4 รวมผลการทำงานของโค้ด

<!DOCTYPE html>

<html lang=”en”>

<head>

    <meta charset=”UTF-8″>

    <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>

    <title>XO Game</title>

    <style>

        /* สไตล์พื้นหลัง */

        body {

            background-image: url(‘https://wallpapercave.com/wp/wp6058967.jpg‘); /* ใส่ภาพพื้นหลังที่ต้องการ */

            background-size: cover;

            display: flex;

            justify-content: center;

            align-items: center;

            height: 100vh;

            margin: 0;

        }

        /* สไตล์หน้าจอเริ่มต้น */

        #startScreen {

            display: flex;

            flex-direction: column;

            align-items: center;

            justify-content: center;

            background: rgba(255, 255, 255, 0.8);

            padding: 20px;

            border-radius: 10px;

        }

        #startScreen h1 {

            font-size: 2rem;

            margin-bottom: 20px;

        }

        #startButton {

            padding: 10px 20px;

            font-size: 1.2rem;

            cursor: pointer;

            background-color: #4CAF50;

            color: white;

            border: none;

            border-radius: 5px;

        }

        /* สไตล์กระดานเกม */

        #gameBoard {

            display: none;

            grid-template-columns: repeat(3, 100px);

            grid-template-rows: repeat(3, 100px);

            gap: 10px;

        }

        .cell {

            width: 100px;

            height: 100px;

            display: flex;

            justify-content: center;

            align-items: center;

            font-size: 2rem;

            background-color: white;

            border: 2px solid #000;

            cursor: pointer;

        }

        .hidden {

            display: none;

        }

    </style>

</head>

<body>

    <!– หน้าจอเริ่มเกม –>

    <div id=”startScreen”>

        <h1>Welcome to XO Game</h1>

        <button id=”startButton”>Start Game</button>

    </div>

    <!– กระดานเกม XO –>

    <div id=”gameBoard”>

        <div class=”cell” data-index=”0″></div>

        <div class=”cell” data-index=”1″></div>

        <div class=”cell” data-index=”2″></div>

        <div class=”cell” data-index=”3″></div>

        <div class=”cell” data-index=”4″></div>

        <div class=”cell” data-index=”5″></div>

        <div class=”cell” data-index=”6″></div>

        <div class=”cell” data-index=”7″></div>

        <div class=”cell” data-index=”8″></div>

    </div>

    <script>

        const startButton = document.getElementById(‘startButton’);

        const startScreen = document.getElementById(‘startScreen’);

        const gameBoard = document.getElementById(‘gameBoard’);

        const cells = document.querySelectorAll(‘.cell’);

        let currentPlayer = ‘X’;

        let gameState = Array(9).fill(”);

        // ฟังก์ชันเริ่มเกม

        startButton.addEventListener(‘click’, () => {

            startScreen.classList.add(‘hidden’);

            gameBoard.style.display = ‘grid’;

        });

        // ฟังก์ชันตรวจสอบการชนะ

        function checkWinner() {

            const winningCombos = [

                [0, 1, 2],

                [3, 4, 5],

                [6, 7, 8],

                [0, 3, 6],

                [1, 4, 7],

                [2, 5, 8],

                [0, 4, 8],

                [2, 4, 6]

            ];

            for (const combo of winningCombos) {

                const [a, b, c] = combo;

                if (gameState[a] && gameState[a] === gameState[b] && gameState[a] === gameState[c]) {

                    return gameState[a];

                }

            }

            return gameState.includes(”) ? null : ‘Draw’;

        }

        // ฟังก์ชันแสดงผลผู้ชนะ

        function handleWin(winner) {

            setTimeout(() => {

                alert(winner === ‘Draw’ ? ‘It\’s a Draw!’ : ${winner} Wins!);

                gameState.fill(”);

                cells.forEach(cell => cell.textContent = ”);

            }, 100);

        }

        // ฟังก์ชันเมื่อคลิกช่อง

        cells.forEach((cell, index) => {

            cell.addEventListener(‘click’, () => {

                if (!gameState[index]) {

                    gameState[index] = currentPlayer;

                    cell.textContent = currentPlayer;

                    const winner = checkWinner();

                    if (winner) {

                        handleWin(winner);

                    } else {

                        currentPlayer = currentPlayer === ‘X’ ? ‘O’ : ‘X’;

                    }

                }

            });

        });

    </script>

</body>

</html>

wallpapercave.com

6.ผลการดำเนินงาน

เกม XO (Tic Tac Toe) เป็นเกมที่มีผู้เล่นสองคนที่ผลัดกันวางสัญลักษณ์ “X” และ “O” ลงในตาราง 3×3 เพื่อพยายามเรียงสัญลักษณ์ในแนวตั้ง แนวนอน หรือแนวทแยงให้ครบ 3 ช่อง ผลการดำเนินงานของโครงงานนี้มีดังนี้

6.1 การออกแบบตาราง ใช้HTML ในการสร้างตาราง 3×3

6.2 การทำงานของเกม ใช้ JavaScript ในการจัดการตรรกะของเกม เช่น การตรวจสอบผู้ชนะ การเปลี่ยนตาเล่น และการรีเซ็ตเกม

6.3 การแสดงผล ใช้ CSS เพื่อทำให้เกมดูสวยงามและใช้งานง่าย

7.ผลการดำเนินงาน

7.1 เมื่อผู้เล่นลง x,o ครบจำนวน 3 ช่องตามที่กำหนด

      จะแสดงผลว่า  x wins

7.2 เมื่อไม่มีผู้เล่นที่ชนะจะเเสดงผลดังนี้

8.สรุปผลการทดลอง

 เป็นเกมที่เล่นง่ายและสนุก โดยมีผู้เล่นสองคนที่ต้องสลับกันวางเครื่องหมาย

 (X หรือ O) ในช่องที่กำหนดบนตาราง 3×3 เป้าหมายคือการวางเครื่องหมายให้เป็นแถวแนวนอน แนวตั้ง หรือแนวทแยงสามช่องติดกัน ในการทดลองนี้ เราได้พัฒนาเกม XO โดยใช้ HTML, CSS และ JavaScript ผลการทดลองพบว่าเกมมีความน่าสนใจและสามารถเล่นได้ง่าย ผู้เล่นสามารถเข้าใจวิธีการเล่นได้อย่างรวดเร็ว และมีการปรับปรุง UI เพื่อให้ผู้เล่นมีประสบการณ์ที่ดีขึ้นเพื่อการพัฒนาต่อไป

9.เอกสารอ้างอิง

9.1 ใช้แชท ai เพื่อหาข้อมูลเพิ่มเติม https://chatgpt.com/

9.2 รูปภาพพื้นหลัง https://wallpapercave.com/wp/wp6058967.jpg

9.3 อธิบายการเขียนโค๊คและวิธีการใช้งาน https://www.youtube.com/watch?v=pWLCy2F-xJs

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *