كيفية إنشاء XO Game


في هذه السلسة ستنعرف عل كيفية إنشاء لعبة tic tac teo أو لعبة XO المعروفة التي نلعبها كلنا فقط بلغات HTML CSS JavaScript
أولا سننشىء HTML:
في البداية، يجب إنشاء لوحة اللعب باستخدام عناصر HTML div. يمكننا إنشاء 9 عناصر div داخل عنصر div واحد لتشكيل الشبكة التي ستستخدم لعبة Tec Tac Toe. يمكن استخدام الأنماط CSS لتصميم المربعات وتحديد الألوان والخطوط المناسبة.

HTML
<div class="board">
    <div class="square"></div>
    <div class="square"></div>
    <div class="square"></div>
    <div class="square"></div>
    <div class="square"></div>
    <div class="square"></div>
    <div class="square"></div>
    <div class="square"></div>
    <div class="square"></div>
</div>
وهنا مع تنسيقات لغة CSS:

CSS
.board {
    display: flex;
    width: 300px;
    height: 300px;
    flex-wrap: wrap;
    text-align: center;
    font-size: 60px;
    font-weight: bold;
}

.square {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100px;
    height: 100px;
    border: 1px solid black;
}

و الآ مع لغة JavaScript: ثم يجب إنشاء متغيرات داخل الكود البرمجي لتتبع الحالة الحالية للعبة. سنستخدم متغير currentPlayer لتتبع اللاعب الذي هو الآن على الدور ومصفوفة squares لتتبع حالة المربعات على لوحة اللعب.

JavaScript
const squares = document.querySelectorAll('.square');
let currentPlayer = 'X';
ثم يجب استدعاء الحدث click لتحريك اللاعبين. سيتم تعيين نص اللاعب الحالي على المربع الذي يتم النقر عليه. ثم سيتم فحص الفائز باستخدام دالة checkWin() وتشغيل اللعبة حتى يفوز أحد اللاعبين أو يتعادلوا.
ستكون النتيجة النهائية كالتالي:

JavaScript
const squares = document.querySelectorAll('.square');
let currentPlayer = 'X';

for (let i = 0; i < squares.length; i++) {
    squares[i].addEventListener('click', handleMove);
}

function handleMove(event) {
    const square = event.target;
    if (square.textContent !== '') {
        return;
    }
    square.textContent = currentPlayer;
    const winner = checkWin();
    if (winner) {
        alert(`${winner} wins!`);
    } else if ([...squares].every(square => square.textContent !== "")) {
        alert("It's a tie!");
    } else {
        currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
    }
}

function checkWin() {
    const winningCombos = [
        [0, 1, 2],
        [3, 4, 5],
        [6, 7, 8],
        [0, 3, 6],
        [1, 4, 7],
        [2, 5, 8],
        [6, 4, 2],
        [0, 4, 8],
    ];
for (let i = 0; i < winningCombos.length; i++) {
    const [a, b, c] = winningCombos[i];
    if (squares[a].textContent === squares[b].textContent && squares[b].textContent === squares[c].textContent && squares[a].textContent !== '') {
        return squares[a].textContent;
        }
    }
    return null;
}

ستكون النتيجة هكذا يمكنك أخد الكود وتحسين اللعبة بشكل أفضل من ناحية البرمجة والتصميم :



وهكذا إنتهينا إذا أعجبكم الدرس أتمنى تدعومنا بمشاركته وشكرا لكم و وفقكم الله.