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:
pavel committed 2021-12-11 14:58:16 +01:00
1 parent 57931b29de
commit b5c252bd4d
4 files changed
+80 -38

No files matched your search

+13 -31
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);