<?php
// เริ่มต้นเกม
if (!isset($_SESSION['board'])) { $_SESSION['turn'] = 'X';
}
// ตรวจสอบการชนะ
function check_winner($board) {
$winning_combinations = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
];
foreach ($winning_combinations as $combo) {
if ($board[$combo[0]] && $board[$combo[0]] == $board[$combo[1]] && $board[$combo[1]] == $board[$combo[2]]) {
return $board[$combo[0]];
}
}
return null;
}
// เมื่อผู้เล่นเลือกตำแหน่ง
if (isset($_POST['position']) && $_SESSION['board'][$_POST['position']] == '') { $_SESSION['board'][$_POST['position']] = $_SESSION['turn'];
$_SESSION['turn'] = $_SESSION['turn'] == 'X' ? 'O' : 'X';
}
// ตรวจสอบผู้ชนะ
$winner = check_winner($_SESSION['board']);
?>
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>เกม XO</title>
<style>
.board { display: grid; grid-template-columns: repeat(3, 100px); gap: 5px; }
.cell { width: 100px; height: 100px; text-align: center; line-height: 100px; border: 1px solid black; font-size: 24px; cursor: pointer; }
.winner { color: green; font-size: 20px; }
</style>
</head>
<body>
<h1>เกม XO</h1>
<?php if ($winner): ?>
<p class="winner">ผู้ชนะคือ: <?php echo $winner; ?></p>
<form method="post">
<button type="submit" name="reset" value="true">เริ่มเกมใหม่</button>
</form>
<?php else: ?>
<p>ผลหมุนเวียน: <?php echo $_SESSION['turn']; ?></p>
<?php endif; ?>
<div class="board">
<?php foreach ($_SESSION['board'] as $index => $value): ?>
<form method="post" style="margin: 0;">
<button type="submit" name="position" value="<?php echo $index; ?>" class="cell">
<?php echo $value; ?>
</button>
</form>
<?php endforeach; ?>
</div>
<?php
// รีเซ็ตเกม
if (isset($_POST['reset'])) { header("Location: index.php"); }
?>
</body>
</html>
PD9waHAKc2Vzc2lvbl9zdGFydCgpOwoKLy8g4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LmA4LiB4LihCmlmICghaXNzZXQoJF9TRVNTSU9OWydib2FyZCddKSkgewogICAgJF9TRVNTSU9OWydib2FyZCddID0gYXJyYXlfZmlsbCgwLCA5LCAnJyk7CiAgICAkX1NFU1NJT05bJ3R1cm4nXSA9ICdYJzsKfQoKLy8g4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LiB4Liy4Lij4LiK4LiZ4LiwCmZ1bmN0aW9uIGNoZWNrX3dpbm5lcigkYm9hcmQpIHsKICAgICR3aW5uaW5nX2NvbWJpbmF0aW9ucyA9IFsKICAgICAgICBbMCwgMSwgMl0sCiAgICAgICAgWzMsIDQsIDVdLAogICAgICAgIFs2LCA3LCA4XSwKICAgICAgICBbMCwgMywgNl0sCiAgICAgICAgWzEsIDQsIDddLAogICAgICAgIFsyLCA1LCA4XSwKICAgICAgICBbMCwgNCwgOF0sCiAgICAgICAgWzIsIDQsIDZdCiAgICBdOwoKICAgIGZvcmVhY2ggKCR3aW5uaW5nX2NvbWJpbmF0aW9ucyBhcyAkY29tYm8pIHsKICAgICAgICBpZiAoJGJvYXJkWyRjb21ib1swXV0gJiYgJGJvYXJkWyRjb21ib1swXV0gPT0gJGJvYXJkWyRjb21ib1sxXV0gJiYgJGJvYXJkWyRjb21ib1sxXV0gPT0gJGJvYXJkWyRjb21ib1syXV0pIHsKICAgICAgICAgICAgcmV0dXJuICRib2FyZFskY29tYm9bMF1dOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbnVsbDsKfQoKLy8g4LmA4Lih4Li34LmI4Lit4Lic4Li54LmJ4LmA4Lil4LmI4LiZ4LmA4Lil4Li34Lit4LiB4LiV4Liz4LmB4Lir4LiZ4LmI4LiHCmlmIChpc3NldCgkX1BPU1RbJ3Bvc2l0aW9uJ10pICYmICRfU0VTU0lPTlsnYm9hcmQnXVskX1BPU1RbJ3Bvc2l0aW9uJ11dID09ICcnKSB7CiAgICAkX1NFU1NJT05bJ2JvYXJkJ11bJF9QT1NUWydwb3NpdGlvbiddXSA9ICRfU0VTU0lPTlsndHVybiddOwogICAgJF9TRVNTSU9OWyd0dXJuJ10gPSAkX1NFU1NJT05bJ3R1cm4nXSA9PSAnWCcgPyAnTycgOiAnWCc7Cn0KCi8vIOC4leC4o+C4p+C4iOC4quC4reC4muC4nOC4ueC5ieC4iuC4meC4sAokd2lubmVyID0gY2hlY2tfd2lubmVyKCRfU0VTU0lPTlsnYm9hcmQnXSk7Cj8+Cgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0idGgiPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgIDx0aXRsZT7guYDguIHguKEgWE88L3RpdGxlPgogICAgPHN0eWxlPgogICAgICAgIC5ib2FyZCB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDEwMHB4KTsgZ2FwOiA1cHg7IH0KICAgICAgICAuY2VsbCB7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogMTAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBmb250LXNpemU6IDI0cHg7IGN1cnNvcjogcG9pbnRlcjsgfQogICAgICAgIC53aW5uZXIgeyBjb2xvcjogZ3JlZW47IGZvbnQtc2l6ZTogMjBweDsgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxoMT7guYDguIHguKEgWE88L2gxPgogICAgPD9waHAgaWYgKCR3aW5uZXIpOiA/PgogICAgICAgIDxwIGNsYXNzPSJ3aW5uZXIiPuC4nOC4ueC5ieC4iuC4meC4sOC4hOC4t+C4rTogPD9waHAgZWNobyAkd2lubmVyOyA/PjwvcD4KICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgbmFtZT0icmVzZXQiIHZhbHVlPSJ0cnVlIj7guYDguKPguLTguYjguKHguYDguIHguKHguYPguKvguKHguYg8L2J1dHRvbj4KICAgICAgICA8L2Zvcm0+CiAgICA8P3BocCBlbHNlOiA/PgogICAgICAgIDxwPuC4nOC4peC4q+C4oeC4uOC4meC5gOC4p+C4teC4ouC4mTogPD9waHAgZWNobyAkX1NFU1NJT05bJ3R1cm4nXTsgPz48L3A+CiAgICA8P3BocCBlbmRpZjsgPz4KCiAgICA8ZGl2IGNsYXNzPSJib2FyZCI+CiAgICAgICAgPD9waHAgZm9yZWFjaCAoJF9TRVNTSU9OWydib2FyZCddIGFzICRpbmRleCA9PiAkdmFsdWUpOiA/PgogICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIHN0eWxlPSJtYXJnaW46IDA7Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBuYW1lPSJwb3NpdGlvbiIgdmFsdWU9Ijw/cGhwIGVjaG8gJGluZGV4OyA/PiIgY2xhc3M9ImNlbGwiPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVjaG8gJHZhbHVlOyA/PgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgPC9kaXY+CgogICAgPD9waHAKICAgIC8vIOC4o+C4teC5gOC4i+C5h+C4leC5gOC4geC4oQogICAgaWYgKGlzc2V0KCRfUE9TVFsncmVzZXQnXSkpIHsKICAgICAgICBzZXNzaW9uX3Vuc2V0KCk7CiAgICAgICAgc2Vzc2lvbl9kZXN0cm95KCk7CiAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogaW5kZXgucGhwIik7CiAgICB9CiAgICA/Pgo8L2JvZHk+CjwvaHRtbD4=