gpt4 book ai didi

node.js - 与 socket.io 和 uci 下棋

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:27 25 4
gpt4 key购买 nike

我想创建一个网络应用程序,您可以在其中与 UCI 国际象棋引擎对战。我找到了 https://github.com/imor/uci这在命令行上很好用。所以我“只”需要一个 websocket 来评估 Action 。

但我无法让它运行...我试过了(基于 uci-example):

io.sockets.on('connection',function(socket){
socket.on('start', function(data) {
var uci = new UCI();
var game = new Chess();
uci.on('ready', function () {
//Start a new 10 minute game with engine as black, use the first found
//engine and the first found polyglot book
uci.startNewGame(uci.getAvailableEngines()[0], 'black', 10,
uci.getAvailableBooks()[0]);
}).on('newgame', function () {
console.log("A new 10 minute game has started.");
console.log("Enter your moves in algebraic notation. E.g. e2e4<Enter>");
console.log(game.ascii());
}).on('moved', function (move) {
game.move(move);
console.log(move.from + move.to + (move.promotion ? move.promotion : ''));
console.log(game.ascii());
}).on('error', function (message) {
console.log('Error:' + message);
}).on('exit', function (message) {
console.log('Exiting:' + message);
}).on('gameends', function (result, reason) {
console.log('Game ends with result ' + result + ' because ' + reason);
uci.shutdown();
process.exit();
});
})

socket.on('m',function(data){
uci.move(data.move);
});
});

开始游戏是有效的:socket.emit('start',{"bar":"foo"})但是当我尝试使用 socket.emit('m':"e2e4") 移动时,它不知道 uci.move

没关系,因为它是在 socket.on('start')... 中定义的,所以他不知道,但我无法让它运行。我尝试了一些愚蠢的想法,例如将 socket.on('m') 放入 socket.on('start')...

有人可以帮我解决这个问题吗?如何将移动发送到创建的 uci 连接?或者这是不可能的?

非常感谢。

最佳答案

尝试在范围层次结构中向上移动 var uci

io.sockets.on('connection',function(socket){
var uci;
socket.on('start', function(data) {
uci = new UCI();
var game = new Chess();
...
})

socket.on('m',function(data){
uci.move(data.move);
});
});

关于node.js - 与 socket.io 和 uci 下棋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20743116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com