83 lines
2.4 KiB
JavaScript
83 lines
2.4 KiB
JavaScript
async function getPythonData(path, json) {
|
|
try {
|
|
const response = await fetch(path, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(json)
|
|
});
|
|
|
|
// This waits for the JSON to be unpacked
|
|
const data = await response.json();
|
|
|
|
// Now you can return the actual data object
|
|
return data;
|
|
} catch (error) {
|
|
console.error("Failed to get data:", error);
|
|
}
|
|
}
|
|
|
|
var draggable = true
|
|
|
|
function onDragStart(source, piece, position, orientation) {
|
|
if (!draggable) return false
|
|
}
|
|
|
|
function onDrop(source, target, piece, newPos, oldPos, orientation) {
|
|
if (source == target || moves.length === 10) return 'snapback';
|
|
if (draggable == false) return
|
|
draggable = false
|
|
getPythonData("https://honey-motel.bnr.la/app/move", { uci: source + target, fen: fen })
|
|
.then(result => {
|
|
board.position(result.fen)
|
|
fen = result.fen
|
|
if (result.san == undefined) return
|
|
moves.push(result.san)
|
|
document.getElementById("guess"+guessNum+"ply"+moves.length).innerText = result.san
|
|
})
|
|
draggable = true
|
|
}
|
|
|
|
let answer = ["Nh3", "h6", "e3", "e6", "Nc3", "c6", "Nf4", "Bb4", "Nh5", "g6"]
|
|
|
|
function validateGuess() {
|
|
if (moves.length != 10) return;
|
|
for (let i = 0; i < 10; i++) {
|
|
if (answer.includes(moves[i])) {
|
|
document.getElementById("guess"+guessNum+"ply"+(i+1)).style.backgroundColor = "orange"
|
|
}
|
|
if (moves[i] === answer[i]) {
|
|
document.getElementById("guess"+guessNum+"ply"+(i+1)).style.backgroundColor = "green"
|
|
}
|
|
}
|
|
document.getElementById("guessDisplay").innerHTML += "<br>"
|
|
guessNum++
|
|
for (let i = 0; i < 10; i++) {
|
|
document.getElementById("guessDisplay").innerHTML += `<div id="guess${guessNum}ply${i + 1}" class="move">- -</div>
|
|
`
|
|
}
|
|
fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
|
|
board.position(fen)
|
|
moves = []
|
|
}
|
|
|
|
function resetBoard() {
|
|
fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
|
|
board.position(fen)
|
|
moves = []
|
|
for (let i = 0; i < 10; i++) {
|
|
document.getElementById("guess"+guessNum+"ply"+(i+1)).innerText = "- -"
|
|
}
|
|
}
|
|
|
|
let fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
|
|
let moves = []
|
|
let guessNum = 1
|
|
const board = Chessboard('board', {
|
|
position: 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR',
|
|
pieceTheme: './pieces/{piece}.png',
|
|
draggable: true,
|
|
onDrop: onDrop,
|
|
onDragStart: onDragStart
|
|
});
|
|
|