board.php
Web ページにボードを表示するファイルが 1 つあります。このファイルには、boardEngine.php
すべての変数と行列が初期化されたファイルと、計算に必要なすべての関数が含まれています。
board.php
ボードに次の手を入力できるようにフォームを入れました。board.php
コードは次のようになります。
<!doctype html>
<html>
<body>
<?php
include_once('boardEngine.php');
?>
<div id='board'>
<?php
if (isset($_GET['move'] )) {
checkMove($_POST['queryMove']); // checkMove is from boardEngine.php
}
printBoard(); // function from boardEngine.php
?>
</div>
<form id="moveForm" action="board.php?move" method="post" >
<input type="text" name="queryMove" placeholder="form: 'e2f3' (e2 to f3)" required> </p>
<input type="submit" value=">move!<" >
</form>
</body>
問題は、移動を送信するboard.php
と、 set でリロードされること$_GET['move']
です。リロードされているため、再び含まれているように見えboardEngine.php
、マトリックス内のすべての位置が初期化されます。
これまでのところ、移動が送信され、board.php
リロードboardEngine.php
され、すべての位置がリセットされて別の時間に含まれていることを理解しているので$_GET['move']
、フォームを介して変数が設定されているため、1 つの移動が計算されます。新しい手が送信されると、ボードはリセットされ、最後の手が考慮されます。
私が間違っている?どうすればこの問題を解決できますか?
編集 1: これが私の boardEngine.php コードの外観です。
<?php
define("PAWN", 10);
define("KNIGHT", 20);
define("BISHOP", 30);
define("ROOK", 40);
define("QUEEN", 50);
define("KING", 100);
define("B_PAWN", -10);
define("B_KNIGHT", -20);
define("B_BISHOP", -30);
define("B_ROOK", -40);
define("B_QUEEN", -50);
define("B_KING", -100);
$board = array(
array("", 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'),
array( 1, B_ROOK, B_KNIGHT, B_BISHOP, B_QUEEN, B_KING, B_BISHOP, B_KNIGHT, B_ROOK),
array(2, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN),
array(3, 0, 0, 0, 0, 0, 0, 0, 0),
array(4, 0, 0, 0, 0, 0, 0, 0, 0),
array(5, 0, 0, 0, 0, 0, 0, 0, 0),
array(6, 0, 0, 0, 0, 0, 0, 0, 0),
array(7, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN),
array(8, ROOK, KNIGHT, BISHOP, QUEEN, KING, BISHOP, KNIGHT, ROOK)
);
function checkMove($query) {
global $board;
if(strlen($query) != 4) {
return "Wrong query!";
}
//...
// Next modfy the $board positions according to rules
}
function printBoard() {
// ...
}