Właśnie uruchamiam bota dla sztucznej inteligencji dla gry nethack
i nie mogę ominąć "testu ludzkiego", który znajduje się w źródle. Część kodu mówię o to nethack/sys/unix/unixunix.c
:Jak połączyć się z nethack z Node.js?
#ifdef TTY_GRAPHICS
/* idea from rpick%[email protected]
* prevent automated rerolling of characters
* test input (fd0) so that tee'ing output to get a screen dump still
* works
* also incidentally prevents development of any hack-o-matic programs
*/
/* added check for window-system type -dlc */
if (!strcmp(windowprocs.name, "tty"))
if (!isatty(0))
error("You must play from a terminal.");
#endif
Pracuję w JavaScripcie (dokładniej node.js) oraz w związku z powyższym, nie pozwoli mi grać z programu , mimo że spawnuję proces potomny powłoki bash i mówię, aby uruchomił nethack
. Muszę wymyślić sposób na ominięcie powyższego bez rekompilacji źródła.
Obecny kod używam jest:
"use strict";
var env = { TERM: 'tty' };
for (var k in process.env) {
env[k] = process.env[k];
}
var terminal = require('child_process').spawn('bash', [], {
env: env,
});
terminal.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
terminal.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
setTimeout(function() {
terminal.stdin.write('nethack');
terminal.stdin.end();
}, 1000);
Wyjście programu jest:
stdout: You must play from a terminal.
child process exited with code 1
Co node.js/JavaScript (a nie jakiegokolwiek innego języka lub ramy, jeśli możliwe) czarnej magii mogę użyć, aby rozwiązać ten problem?
Nie jestem tego pewien, możesz zajrzeć do modułu [moduł TTY] w węźle (http://nodejs.org/api/tty.html). Również [ten wątek] (http://groups.google.com/group/nodejs/browse_thread/thread/6fd25d16b250aa7d) może być interesujący. –
Tak, sprawdziłem moduł TTY: wygląda na to, że v0.6 + odbiera metodę 'tty.open()', co może być czymś, czego mogę chcieć, ale ta metoda używa przestarzałego 'proces.binding ('stdio') 'call, którego nie mogę znaleźć na żadnej dokumentacji. Sprawdzę jednak wątek. Dzięki. – chrisdotcode