Files
web_2025/R3.01/tp/tp4/ex2/helpers.php
T

84 lines
1.4 KiB
PHP
Raw Normal View History

2026-04-12 17:58:57 +02:00
<?php
2026-04-15 16:06:48 +02:00
function initializeGame()
{
// Une grille vide contient 9 cases valant 0.
$_SESSION['grid'] = array_fill(0, 9, 0);
$_SESSION['playerTurn'] = 1;
}
function nextPlayer($player)
{
return $player === 1 ? 2 : 1;
}
2026-04-12 17:58:57 +02:00
function isWinner($grid, $player)
{
2026-04-15 16:06:48 +02:00
$winStates = array(
array(0, 1, 2), array(3, 4, 5), array(6, 7, 8),
array(0, 3, 6), array(1, 4, 7), array(2, 5, 8),
array(0, 4, 8), array(2, 4, 6)
);
2026-04-12 17:58:57 +02:00
2026-04-15 16:06:48 +02:00
foreach ($winStates as $winState) {
if (
$grid[$winState[0]] == $player &&
2026-04-12 17:58:57 +02:00
$grid[$winState[1]] == $player &&
2026-04-15 16:06:48 +02:00
$grid[$winState[2]] == $player
) {
2026-04-12 17:58:57 +02:00
return true;
}
}
2026-04-15 16:06:48 +02:00
2026-04-12 17:58:57 +02:00
return false;
}
function noWinner($grid)
{
2026-04-15 16:06:48 +02:00
for ($i = 0; $i < 9; $i++) {
if ($grid[$i] == 0) {
2026-04-12 17:58:57 +02:00
return false;
2026-04-15 16:06:48 +02:00
}
}
2026-04-12 17:58:57 +02:00
return true;
}
2026-04-15 16:06:48 +02:00
function getWinner($grid)
{
if (isWinner($grid, 1)) {
return 1;
}
if (isWinner($grid, 2)) {
return 2;
}
return 0;
}
function displayGrid($grid, $isInteractive = true)
2026-04-12 17:58:57 +02:00
{
echo '<table class="morpion">';
2026-04-15 16:06:48 +02:00
for ($i = 0; $i < 3; $i++) {
echo '<tr>';
for ($j = 0; $j < 3; $j++) {
echo '<td>';
2026-04-12 17:58:57 +02:00
2026-04-15 16:06:48 +02:00
$pos = 3 * $i + $j;
if ($grid[$pos] == 0 && $isInteractive) {
2026-04-12 17:58:57 +02:00
echo "<a href='?pos=$pos'></a>";
2026-04-15 16:06:48 +02:00
}
if ($grid[$pos] == 1) {
2026-04-12 17:58:57 +02:00
echo '<i class="fa fa-times" aria-hidden="true"></i>';
2026-04-15 16:06:48 +02:00
}
if ($grid[$pos] == 2) {
2026-04-12 17:58:57 +02:00
echo '<i class="fa fa-circle-o" aria-hidden="true"></i>';
2026-04-15 16:06:48 +02:00
}
2026-04-12 17:58:57 +02:00
2026-04-15 16:06:48 +02:00
echo '</td>';
2026-04-12 17:58:57 +02:00
}
2026-04-15 16:06:48 +02:00
echo '</tr>';
2026-04-12 17:58:57 +02:00
}
2026-04-15 16:06:48 +02:00
echo '</table>';
2026-04-12 17:58:57 +02:00
}