Я ищу способ запустить шахматный движок (например, Stockfish ) без использования NDK и JNI.
Основная проблема, с которой я столкнулся, заключается в том, как запустить программное обеспечение (как в приглашении) и сохранить его работоспособным, пока оно отправляет мне результаты.
Второй и более конкретный вопрос - как установить на устройство установленные шахматные движки, если это возможно (и если есть способ их использовать).
ниже я подробно расскажу, чего хочу достичь
Я не знаю, возможно ли то, что я хочу сделать, поэтому я объясню: когда вы устанавливаете приложение с шахматным движком, например Komodo или Stockfish , когда вы выполнив их, вы увидите сообщение о том, что вам необходимо загрузить приложение с графическим интерфейсом, чтобы оно работало как полностью шахматная программа. Из этих сообщений каждый может сделать вывод, что приложение с графическим интерфейсом может использовать установленный в устройстве движок.
Есть ли способ увидеть установленные на устройстве движки, чтобы отобразить их в окне выбора, и «извлечь» эти движки из приложений, или найти их расположение на устройстве, или выполнить приложения через другое путь похож на намерения?
Проблема в том, что шахматный движок - это программное обеспечение, которое должно постоянно работать, чтобы использовать позицию; вы посылаете им позицию, которая вам нравится, чтобы они ее использовали, и по мере того, как они анализируют, они продолжают посылать вам свои данные и продолжают делать это, пока вы не отправите им команду остановиться.
Если вы запустите Stockfish в командной строке Windows, вы ясно увидите, о чем я говорю. Когда он выполняется, он ожидает команды; им вы отправляете команду "uci"; затем вы отправляете команду типа "position fen", затем отправляете "go infinite", и они начинают вычислять и продолжают отправлять вывод о своих вычислениях.
Итак, я хотел бы создать приложение, которое будет использовать установленные движки в устройстве.
До сих пор я не обнаружил, как это сделать. Мне пришлось скачать исходный код приложения DoidFish и проанализировать, что они сделали ... и они получили исходный код stockfish и выполнили его с JNI.
Но тогда у меня в приложении был бы фиксированный и ограниченный список движков, и я бы не использовал движки без открытого источника, такие как Komodo и Houdini. Я вижу, что приложение Chessbase может использовать несколько движков, как вы можете видеть на скриншотах на странице приложения. Они также показали движок Komodo в списке (как я купил приложение, чтобы увидеть) ... У меня установлен Komodo ... Так что они должны были сделать по-другому ...
Поскольку я не мог разгадать тайну, я скачал скомпилированную версию armfish и попробовал выполнить ее с помощью метода exec Runtime, например:
Runtime rt = Runtime.getRuntime();
String[] commands = {enginePath, "uci"};
Process proc = rt.exec(commands);
Однако движок - это программное обеспечение, которое вы должны выполнить, и оно должно работать, пока вы отправляете ему команды, как я объяснил ранее, но таким образом я выполнил движок, и он отправил мне вывод ( Я получил с BufferedReader), а затем прекратил выполнение.
Извините за такой большой текст, не могли бы вы помочь мне разобраться?