2012-03-31 82 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