php-chess/html/index.php

56 lines
1.1 KiB
PHP
Raw Normal View History

2024-10-19 13:32:46 +00:00
<?php
require_once '../src/core.php';
use Engine\GameOutcome;
use Engine\MinimaxDF;
2024-10-31 19:34:22 +00:00
use Engine\PeSTO;
use Engine\PieceValues;
use Engine\WeightedHeuristics;
2024-10-19 13:32:46 +00:00
use Game\Game;
use Game\Move;
2024-10-19 13:32:46 +00:00
session_start();
if (isset($_SESSION["game"])) {
$game = $_SESSION["game"];
2024-10-31 15:59:19 +00:00
$engine = $_SESSION["engine"];
} else {
$game = Game::fromStartPosition();
$engine = new MinimaxDF(1, new WeightedHeuristics([
[new GameOutcome(), 1.0],
2024-10-31 19:34:22 +00:00
[new PieceValues(), 1.0],
[new PeSTO(), 1.0],
]));
2024-10-31 15:59:19 +00:00
$_SESSION["game"] = $game;
2024-10-31 15:59:19 +00:00
$_SESSION["engine"] = $engine;
}
2024-10-19 13:32:46 +00:00
$move = null;
$interactive = true;
$content = function() use ($game, &$move, &$interactive) {
require "../src/View/fragments/game.php";
2024-10-19 13:32:46 +00:00
};
if (isset($_GET["move"])) {
$move = Move::fromJS($_REQUEST["move"]);
if (isset($_GET["wait"])) {
$opponentMove = $engine->nextMove($game);
$game->applyInPlace($opponentMove);
$content();
} else {
$game->applyInPlace($move);
$interactive = false;
$content();
}
2024-10-31 15:59:19 +00:00
} else {
require "../src/View/base.php";
}