Estoy comenzando un robot de IA para el juego nethack
, y no puedo pasar por alto el 'cheque humano' que está en la fuente. La sección de código que estoy hablando es nethack/sys/unix/unixunix.c
:¿Cómo conectarse a nethack desde 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
estoy trabajando en JavaScript, (más específicamente Node.js), y debido a lo anterior, no me deja jugar desde el programa , a pesar de que estoy generando un proceso hijo bash shell y diciéndole que comience nethack
. Necesito encontrar una manera de eludir lo anterior sin volver a compilar la fuente.
El código actual que estoy usando es:
"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);
La salida del programa es:
stdout: You must play from a terminal.
child process exited with code 1
Lo Node.js/JavaScript (y no cualquier otro idioma o marco, si posible) magia negra ¿podría usar para resolver este problema?
No estoy seguro de esto, es posible que desee examinar el [módulo TTY] del nodo (http://nodejs.org/api/tty.html). Además, [este tema] (http://groups.google.com/group/nodejs/browse_thread/thread/6fd25d16b250aa7d) podría ser de su interés. –
Sí, he comprobado el módulo TTY: parece que v0.6 + desaprueba el método 'tty.open()', que puede ser algo que pueda querer, pero ese método usa un 'process.binding desaprobado ('stdio') 'llamada, que no puedo encontrar ninguna documentación. Aunque voy a ver el hilo. Gracias. – chrisdotcode