2012-03-31 47 views
1

我有这样的国际象棋引擎Rybka.exe,我有在Java 这里执行的是你如何运行Rybka的例子: 一旦你点击它,打开控制台和输入等待。 然后你输入“uci”,然后按回车,等待它加载(大约1秒),然后你必须输入更多的行作为选项和东西。 问题是我不知道如何将这些命令从java传递给Rybka。事实是,这些命令需要一次输入一个,因为你必须等待一些执行。 这是我试图打开它的方式。 代码:在Java和传球执行外部程序命令

Process p1 = Runtime.getRuntime().exec("Rybka.exe"); 

这工作,因为你可以看到,Rybka.exe是在任务管理器活跃,但我不知道如何将命令传递给它。

回答

0

一个)how to bind a windows console application with java application?

链路

InputStream is = p1.getInputStream(); 
OutputStream os = p1.getOutputStream(); 

(由明显http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html供给)

+0

注意:rybka(因为所有的UCI/WinBoard引擎)从**命令**(传递给正在运行的引擎)中区分**参数**(用于在运行时设置引擎状态)。请参阅http://en.wikipedia.org/wiki/Universal_Chess_Interface和http://wbec-ridderkerk.nl/html/UCIProtocol.html(搜索结果约5秒钟) – vaxquis 2012-03-31 19:00:21

+0

我不敢相信我太盲目。感谢让我再次看到并获得它。我使用输入来打印控制台的输出,但我从来没有想过要把它反转。 – user1189571 2012-03-31 19:06:19

0

您是否尝试过传递参数/命令如下?

Runtime.getRuntime()。exec(“Rybka.exe parameter1,parameter2”);

https://www.google.pl/search?q=java+binding+console+to+an+app&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

b)以短:由谷歌搜索查询的礼貌提供

+0

我做了,但首先它执行的速度很快,很可能是因为它只是执行Rybka.exe,其次它不会提供任何输出。我知道我创建了输出正常,因为如果我执行其他不需要参数的其他东西,就可以。 – user1189571 2012-03-31 18:57:50