2012-03-31 2 views
1

У меня есть этот шахматный движок Rybka.exe, который я должен выполнить в java Вот пример того, как вы запускаете Rybka: Как только вы нажмете на нее, консоль откроется и ждет ввода , Итак, вы вводите «uci», и вы нажимаете enter, и вы ждете его загрузки (около 1 секунды), а затем вам нужно ввести еще несколько строк в качестве параметров и прочее. Проблема в том, что я не знаю, как передать эти команды из java в Rybka. Дело в том, что эти команды нужно вводить по одному, потому что вам нужно дождаться выполнения некоторых команд. Вот как я пытался открыть его. Код:Выполнение внешней программы в java и передачах команд

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

Это работает, потому что вы можете увидеть, что Rybka.exe активен в диспетчере задач, но я не знаю, как передавать команды на него.

ответ

0

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

ссылка предоставлена ​​любезности поискового запроса Google:

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

б) короче:

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 секунд googling) – vaxquis

+0

Не могу поверить, что я был настолько слеп. Спасибо, что заставил меня увидеть его снова и получить. Я использовал вход для вывода вывода на консоль, но я никогда не думал об этом. – user1189571

0

Вы пробовали передавать параметры/команды, как показано ниже?

Runtime.getRuntime(). Exec ("Rybka.exe parameter1, parameter2");

+0

Я сделал, но сначала он выполняет быстрый, вероятно, потому что он просто выполняет Rybka.exe, а во-вторых, он не дает никакого вывода. Я знаю, что я создал ouput нормально, потому что, если я выполняю что-то еще, что не нуждается в параметрах, работает нормально. – user1189571

Смежные вопросы