2012-03-31 18 views
1

Ich habe diese Schach-Engine Rybka.exe, die ich in Java ausführen müssen Hier ist ein Beispiel, wie Sie Rybka ausführen: Sobald Sie darauf klicken, öffnet Konsole und wartet auf Eingabe . Dann gibst du "uci" ein und du drückst Enter und du wartest auf das Laden (ca. 1 Sek.) Und dann musst du noch ein paar Zeilen als Optionen und Zeug eingeben. Das Problem ist, dass ich nicht weiß, wie diese Befehle von Java an Rybka übergeben werden. Tatsache ist, dass diese Befehle einzeln eingegeben werden müssen, da Sie warten müssen, bis einige ausgeführt wurden. So habe ich versucht, es zu öffnen. Code:Ausführen von externen Programm in Java und Übergabe von Befehlen

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

Dies funktioniert, weil man sehen kann, dass Rybka.exe im Task-Manager aktiv ist, aber ich weiß nicht, wie Befehle, um es zu übergeben.

Antwort

0

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

Link durch die mit freundlicher Genehmigung von Google-Suchabfrage zur Verfügung gestellt:

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) kurz:

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

(von den offensichtlichen http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html geliefert)

+0

Hinweis: rybka (wie alle UCI/WinBoard-Engines) unterscheidet ** Parameter ** (verwendet für die Einstellung des Engine-Status zur Laufzeit) von ** Befehlen ** (an die laufende Engine weitergegeben); siehe http://en.wikipedia.org/wiki/Universal_Chess_Interface und http://wbec-ridderkerk.nl/html/UCIProtocol.html (Ergebnis von ~ 5 Sekunden Googeln) – vaxquis

+0

Ich kann nicht glauben, dass ich so blind war. Danke, dass Sie mich wieder sehen und verstehen. Ich habe Eingaben verwendet, um die Ausgabe der Konsole zu drucken, aber ich habe nie darüber nachgedacht, das Gegenteil zu tun. – user1189571

0

Haben Sie versucht, Parameter/Befehle wie unten zu übergeben?

Runtime.getRuntime(). Exec ("Rybka.exe Parameter1, Parameter2");

+0

Ich habe, aber zuerst führt es zu schnell, wahrscheinlich, weil es nur Rybka.exe ausführt und zweitens gibt es keine Ausgabe. Ich weiß, dass ich output ok erstellt habe, denn wenn ich etwas anderes ausführe, das keine Parameter benötigt, funktioniert das ok. – user1189571

Verwandte Themen