tp4 ex2
This commit is contained in:
parent
74ebab4b24
commit
553b30bdcc
@@ -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';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user