作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想创建一个网络应用程序,您可以在其中与 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/
我有一个移动程序,通过传递一对将合法移动应用于棋盘上的棋子:(cons source dest) 所以 (cons 1 2) 从棋盘的位置 1 拿一 block 棋子并将其移动到位置 2。 我正在尝试
我想创建一个网络应用程序,您可以在其中与 UCI 国际象棋引擎对战。我找到了 https://github.com/imor/uci这在命令行上很好用。所以我“只”需要一个 websocket 来评估
我是一名优秀的程序员,十分优秀!