29 lines
763 B
JavaScript
29 lines
763 B
JavaScript
const path = require("path");
|
|
const { Engine } = require("node-uci");
|
|
|
|
require("dotenv").config();
|
|
const engine = new Engine(path.join(__dirname, process.env.CHESS_ENGINE_PATH || "engine/stockfish16.exe"));
|
|
|
|
engine
|
|
.init()
|
|
.then((eng) => {
|
|
return eng.setoption("UCI_LimitStrength", true);
|
|
})
|
|
.then((eng) => {
|
|
eng.setoption("UCI_Elo");
|
|
})
|
|
.catch((err) => {
|
|
console.error(err);
|
|
});
|
|
|
|
const nextMove = async ({ position }) => {
|
|
await engine.isready();
|
|
console.log("Chess engine ready");
|
|
engine.position(position);
|
|
const result = await engine.go({ depth: 10 });
|
|
console.log("Best move or position", position, "is", result.bestmove);
|
|
return result.bestmove;
|
|
};
|
|
|
|
module.exports = { nextMove };
|