2012-03-31 15 views
1

私はこのチェスエンジンRybka.exeを持っています。これはJavaで実行する必要があります ここではRybkaをどのように実行するかの例を示します: コンソールを開いて入力を待ちます。 それで、 "uci"と入力してEnterを押すと、それが読み込まれるのを待ちます(およそ1秒)。その後、オプションやものとしていくつかの行を入力する必要があります。 問題は、JavaからRybkaにそれらのコマンドを渡す方法がわかりません。実際には、それらのコマンドは一度に1つずつ入力する必要があります。なぜなら、実行するのを待たなければならないからです。 これは私がそれを開こうとした方法です。 コード:javaで外部プログラムを実行してコマンドを渡す

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

あなたはRybka.exeは、タスクマネージャで活性であることがわかりますので、これは、動作しますが、私はそれにコマンドを渡す方法がわかりません。

答えて

0

A)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

+0

私はとても盲目だったとは思えません。もう一度見てくれてありがとう。私はコンソールの出力を印刷するために入力を使用しましたが、逆にすることは考えていませんでした。 – user1189571

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):Googleの検索クエリのご好意により提供さ

+0

私はそうしましたが、最初はRybka.exeを実行するだけで速く実行されます.2番目に出力が出ないためです。私はouput okを作成したことを知っています。なぜなら、do notは必要としない何か他のものを実行すると、パラメータがうまく動作するからです。 – user1189571

関連する問題