7 / 7 / 7
Регистрация: 20.06.2016
Сообщений: 72
1

Обмен данными GUI и шахматного движка

02.06.2017, 20:47. Показов 1545. Ответов 10

Author24 — интернет-сервис помощи студентам
Пишу GUI для работы с шахматным движком. Движок это exeшник принимающий команды, но как мне сделать возможным обмен данными между ними?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2017, 20:47
Ответы с готовыми решениями:

Обмен данными между 2 GUI приложениями Qt
Добрый вечер, господа форумчане. Реализовываю межпроцессорное взаимодействие 2 GUI приложений. ...

Двусторонний обмен данными без блокировки GUI
Здравствуйте, у меня следующая ситуция: есть GUI написанный с WX. По нажатию кнопки создается...

Обмен данными
Всем привет. Попросили с нуля написать обмен данными между древней АльфаАвто и переписанной...

Обмен данными
Друзья, помогите осуществить задумку. Нужно считывать таблицу с данными из клиентского приложения,...

10
Диссидент
Эксперт C
27705 / 17321 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
02.06.2017, 23:33 2
Цитата Сообщение от Anikin Посмотреть сообщение
exeшник принимающий команды
Только принимающий? Или еще и отвечающий? А в каком виде?
0
7 / 7 / 7
Регистрация: 20.06.2016
Сообщений: 72
02.06.2017, 23:59  [ТС] 3
И принимающий и отвечающий. По умолчанию в стандартный поток ввода и вывода. Движок - консольное приложение
0
Диссидент
Эксперт C
27705 / 17321 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
03.06.2017, 00:47 4
Anikin, В каком фреймворке (библиотеке, ИДЕ) вы работаете? Вот в Qt есть замечательная штука - QProcess , позволяющая весьма комфортно направлять ввод и перехватывать вывод запущенного процесса. Я думаю, что и в других средах (даже в WinAPI) нечто подобное есть.
Но самое простое решение - перенаправление ввода-вывода средствами ОС.
Запускаете "chessdvigok <input.txt >out.txt" и он будет кушать стандартный ввод из файла input.txt, а какать свой стандартный вывод в out.txt (надеюсь, вы понимаете, что имена файлов могут быть произвольными). Это решение не слишком изящно, но должно работать во всех операционных системах.
Кстати, если написать >>out.txt, то он будет не писать файл каждый раз заново, а дописывать в него.
ЗЫ. А что за движок-то, если не секрет? Я когда-то немножко играл в шахматы...
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.06.2017, 01:08 5
Anikin, https://youtu.be/_4EuZI8Q8cs?t=3m3s
0
7 / 7 / 7
Регистрация: 20.06.2016
Сообщений: 72
03.06.2017, 20:08  [ТС] 6
Самый популярный и самый сильный - stockfish 8. Немного не понял, а как мне из своей программы запустить другую?
P.S. Никогда таким не занимался.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.06.2017, 22:40 7
Anikin, и вправду зачем смотреть ответы в теме - лучше продолжать спрашивать одно и тоже
0
7 / 7 / 7
Регистрация: 20.06.2016
Сообщений: 72
04.06.2017, 00:05  [ТС] 8
Я посмотрел Ваш ответ, но все равно не понял, мы подключаем коннектор в файл с самой игрой? Если да, то я не понимаю как оно работает
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
04.06.2017, 00:15 9
Anikin, подключаем не к файлу, а запускаем из нашего приложения ту программу и обмениваемся с ней данными в формате типа командной строки. Причём для обмена используется стандартный язык описания ходов шахматной партии.
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
04.06.2017, 00:20 10
по простому сценарию без перенаправления потоков:
предполагается, что протокол общения такой, как описали выше:
YourChessEngine.exe <inputFile.txt >outputFile.txt.
тогда, подготовьте входной файл inputFile.txt и в консольке набейте вышеуказанную команду. Если все ок, смотрите что там
в outputFile.txt. Если и тут все ок, то из программы это все можно сделать тупо вызывая system
C++
1
2
3
// тут создаем файл inputFile.txt, пишем в него данные, взятые из гуя
system("YourChessEngine.exe <inputFile.txt >outputFile.txt"); // запускаем движок
// тут читаем файл outputFile.txt, интерпретируем что там понаписали и отдаем данные в гуй.
0
Диссидент
Эксперт C
27705 / 17321 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.06.2017, 00:38 11
Цитата Сообщение от Anikin Посмотреть сообщение
Немного не понял, а как мне из своей программы запустить другую?
P.S. Никогда таким не занимался.
Но если уж вам пришлось этим заняться, не стоит ли вообще изучить, как это делается? Все совсем не сложно. Только очень тупой и ленивый не сможет в этом разобраться. Но судя по поставленной задаче, я бы не рискнул зачислить вас ни в одну из этих категорий
0
04.06.2017, 00:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2017, 00:38
Помогаю со студенческими работами здесь

Обмен данными с 1С
Можно ли организовать обмен с 1-С бухгалтерией и как это сделать?

Обмен данными
Добрый день. Не мог ли бы вы мне рассказать об обмене данными через интернет в дельфи? А именно,...

Обмен данными
Прошу помощи тех, кто имеет опыт обмена данными между разными конфигурациями. Есть внешняя...

Обмен данными
Есть программка (написана на Турбо Паскаль 7.0) и есть другая программа, которая написана на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru