This commit is contained in:
JARNOUEN DE VILLARTAY Ulysse (SAFRAN AIRCRAFT ENGINES)
2026-04-15 16:06:48 +02:00
parent 74ebab4b24
commit 553b30bdcc
3 changed files with 142 additions and 42 deletions
+65 -6
View File
@@ -1,11 +1,70 @@
<?php
include 'helpers.php';
session_start();
// view variables
$message = "";
$grid = [0,1,0,1,0,2,2,0,0];
$playerTurn = 1; // 1 or 2
include_once 'helpers.php';
// Si on demande une nouvelle partie, on réinitialise l'état stocké
// en session puis on recharge la page sans paramètre.
if (isset($_GET['reset'])) {
initializeGame();
header('Location: .');
exit;
}
include './views/tictactoe.php';
if (!isset($_SESSION['grid']) || !isset($_SESSION['playerTurn'])) {
initializeGame();
}
// Variables transmises à la vue.
$message = '';
$grid = $_SESSION['grid'];
$playerTurn = (int) $_SESSION['playerTurn'];
$winner = getWinner($grid);
$isGameOver = $winner !== 0 || noWinner($grid);
// On joue uniquement si la partie est encore en cours.
if (!$isGameOver && isset($_GET['pos'])) {
$pos = filter_input(
INPUT_GET,
'pos',
FILTER_VALIDATE_INT,
array('options' => array('min_range' => 0, 'max_range' => 8))
);
if ($pos === false || $pos === null) {
$message = 'Coup invalide.';
} elseif ($grid[$pos] !== 0) {
$message = 'Cette case est déjà occupée.';
} else {
// On enregistre le coup du joueur courant dans la grille.
$grid[$pos] = $playerTurn;
if (isWinner($grid, $playerTurn)) {
$message = "Le joueur $playerTurn gagne la partie.";
} elseif (noWinner($grid)) {
$message = 'Match nul.';
} else {
$playerTurn = nextPlayer($playerTurn);
}
$_SESSION['grid'] = $grid;
$_SESSION['playerTurn'] = $playerTurn;
}
$winner = getWinner($grid);
$isGameOver = $winner !== 0 || noWinner($grid);
}
// Si la page est simplement rafraîchie, on recalcule un message cohérent
// à partir de l'état stocké en session.
if ($message === '') {
if ($winner !== 0) {
$message = "Le joueur $winner gagne la partie.";
} elseif (noWinner($grid)) {
$message = 'Match nul.';
}
}
include_once './views/tictactoe.php';