2024-10-19 13:32:46 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
require_once '../src/core.php';
|
|
|
|
|
2024-10-31 17:43:42 +00:00
|
|
|
use Engine\GameOutcome;
|
|
|
|
use Engine\MinimaxDF;
|
|
|
|
use Engine\PieceValues;
|
|
|
|
use Engine\WeightedHeuristics;
|
2024-10-19 13:32:46 +00:00
|
|
|
use Game\Game;
|
2024-10-31 15:18:23 +00:00
|
|
|
use Game\Move;
|
2024-10-19 13:32:46 +00:00
|
|
|
|
2024-10-31 15:18:23 +00:00
|
|
|
session_start();
|
|
|
|
|
|
|
|
if (isset($_SESSION["game"])) {
|
|
|
|
$game = $_SESSION["game"];
|
2024-10-31 15:59:19 +00:00
|
|
|
$engine = $_SESSION["engine"];
|
2024-10-31 15:18:23 +00:00
|
|
|
} else {
|
|
|
|
$game = Game::fromStartPosition();
|
2024-10-31 17:43:42 +00:00
|
|
|
$engine = new MinimaxDF(1, new WeightedHeuristics([
|
|
|
|
[new GameOutcome(), 1.0],
|
|
|
|
[new PieceValues(), 1.0]
|
|
|
|
]));
|
2024-10-31 15:59:19 +00:00
|
|
|
|
2024-10-31 15:18:23 +00:00
|
|
|
$_SESSION["game"] = $game;
|
2024-10-31 15:59:19 +00:00
|
|
|
$_SESSION["engine"] = $engine;
|
2024-10-31 15:18:23 +00:00
|
|
|
}
|
2024-10-19 13:32:46 +00:00
|
|
|
|
|
|
|
$content = function() use ($game) {
|
2024-10-20 19:55:31 +00:00
|
|
|
require '../src/View/fragments/game.php';
|
2024-10-19 13:32:46 +00:00
|
|
|
};
|
|
|
|
|
2024-10-31 15:18:23 +00:00
|
|
|
if (isset($_GET["move"])) {
|
|
|
|
$move = Move::fromJS($_REQUEST["move"]);
|
|
|
|
$game->applyInPlace($move);
|
|
|
|
|
2024-10-31 15:59:19 +00:00
|
|
|
$opponentMove = $engine->nextMove($game);
|
|
|
|
$game->applyInPlace($opponentMove);
|
|
|
|
|
2024-10-31 15:18:23 +00:00
|
|
|
$content();
|
|
|
|
} else {
|
|
|
|
require '../src/View/base.php';
|
|
|
|
}
|
|
|
|
|