Implement basic frontend-engine interaction

Use a Flask-based Python server as an adapter to the engine's
stdin-stdout inferface.
This commit is contained in:
2021-12-11 14:58:16 +01:00
parent 57931b29de
commit b5c252bd4d
4 changed files with 80 additions and 38 deletions

View File

@@ -1,42 +1,24 @@
import * as visuals from "./visuals.js";
function setupBoard() {
let pawns = [];
for (let x of "abcdefgh") {
pawns.push(
new Piece("pawn", "black", `${x}7`),
new Piece("pawn", "white", `${x}2`)
);
}
return new Configuration([
new Piece("rook", "black", "a8"),
new Piece("rook", "black", "h8"),
new Piece("knight", "black", "b8"),
new Piece("knight", "black", "g8"),
new Piece("bishop", "black", "c8"),
new Piece("bishop", "black", "f8"),
new Piece("queen", "black", "d8"),
new Piece("king", "black", "e8"),
...pawns,
new Piece("rook", "white", "a1"),
new Piece("rook", "white", "h1"),
new Piece("knight", "white", "b1"),
new Piece("knight", "white", "g1"),
new Piece("bishop", "white", "c1"),
new Piece("bishop", "white", "f1"),
new Piece("queen", "white", "d1"),
new Piece("king", "white", "e1"),
]);
function get_json(url) {
var request = new XMLHttpRequest();
request.open("get", url, false);
request.send(null);
return JSON.parse(request.responseText);
}
class Backend {
constructor() {
this.config = setupBoard();
this.config = this.getConfig();
}
getConfig() {
return this.config.clone();
return new Configuration(
get_json("http://localhost:3000/get_state/").map((p) => {
let piece = new Piece();
Object.assign(piece, p);
return piece;
})
);
}
makeMove(move) {
this.config = this.config.makeMove(move);