[C#]Решил написать бота
1.Игрой обязательно надо управлять мышкой. Поделитесь опытом, как это сделать в C#.
Я сам язык не знаю, но пошлю в МСДН, на всякий случай. Наверное, тебе помогут ключевые слова drag and drop.
2.Для отслеживания игровой ситуации необходимо анализировать текущее изображение на экране. Как его получить?По-моему, надо ввести массив еще не сданных карт, массив карт у одного игрока, массив карт другого игрока, массив открытых карт. Нужно отделить обработку игровой ситуации и отрисовку ситуации. Это стандартное решение и не надо тут ничего выдумывать.
3.Необходимо распознавать образы. Все изображения карт есть, нужно только распознавать текстовую информацию, а карты каким-то образом сравнивать. Подскажите какие-нибудь, желательно стандартные, библиотеки предназначенные для подобных целей.
Тебе это не нужно. См. предыдущее замечание.
Походу, тебе слегка еще надо подучиться не C#, а вообще программированию, алгоритмам и т.п. Научиться думать правильно.
бред
бред+1
Я так понял, речь не про написание своей игры в карты, а про управление уже существующей игрой как бы со стороны игрока.
"Управлять мышкой" можно, посылая окну игры мышиные сообщения - WM_MOUSEMOVE, WM_LBUTTONDOWN и т.д.
"Управлять мышкой" можно, посылая окну игры мышиные сообщения - WM_MOUSEMOVE, WM_LBUTTONDOWN и т.д.
мб. он имел в виду, что хочет сделать прогу, которая за человека будет играть с игровой прогой, имеющей только ГУИ?
2,3. Получить текущее изображение на экране - посмотри Spy++ каким нибудь класс окна игры которой хочешь управлять. Далее FindWindow - найти в проге хэндл окна игры,GetWindowDC - получить контекст отображения этого окна. Далее самый тупой вариант - это попиксельно сравнивать прямоугольные куски изображений начиная с каждого пиксела с bitmapами изображений карт. Насчет более продвинутых алгоритмов распознавания не знаю. Можно еще прохавать логику, в каких позициях игра рисует карты (типа (Width div n)*i - х-овая координата i-й карты или похожее выражение) и анализировать только участки изображения где должна быть карта.
P.S. Я не знаю, можно ли в шарпе вызывать WinAPI, пусть поправят если не прав
P.S. Я не знаю, можно ли в шарпе вызывать WinAPI, пусть поправят если не прав
Да, именно это я и имел в виду. Боты в этой игре запрещены, и тщательно отслеживаются, поэтому
боту нельзя лезть в ресурсы программы. Хочется, чтобы он играл как живой человек, т.е. смотрел на
картинку, распознавал игровую ситуацию, принимал решение, а затем указателем мышки нажимал на
нужную кнопку.
боту нельзя лезть в ресурсы программы. Хочется, чтобы он играл как живой человек, т.е. смотрел на
картинку, распознавал игровую ситуацию, принимал решение, а затем указателем мышки нажимал на
нужную кнопку.
100% способа двигать мышь "как человек" не существует. Некоторые программы (например написанные на SDL) игнорируют сообщения мыши/клавиатуры, используя считывание их состояния или DirectInput. В этом случае придется либо на лету ставить хуки в программу, либо использовать драйвера. Оба методы сложны в реализации и только C# не обойдутся. А уж если прога ставит свои драйвера, чтобы мониторить изменения в стандартных драйверах, то без дизассемблера уже никак не обойдешься.
Если все этой защиты нет (как обычно и бывает то нужно почитать главы о сообщениях мыши и воспользоваться PostMessage/SendMessage/SetCursorPos.
PS Желаю удачи. Нужно показать всем этим игроделам, что их ботозащита никуда не годится.
Если все этой защиты нет (как обычно и бывает то нужно почитать главы о сообщениях мыши и воспользоваться PostMessage/SendMessage/SetCursorPos.
PS Желаю удачи. Нужно показать всем этим игроделам, что их ботозащита никуда не годится.
А у вас боты на какой платформе?.. 

не понял, что за платформа?
потом можешь его продавать и срубить кучу бабла
тока если он будет толковый
"ставлю всё на зеро!"-такой не нужен 
тока если он будет толковый
"ставлю всё на зеро!"-такой не нужен 
Если ключевое слово - написать бота, а не c#, то можно посмотреть в сторону AutoIT (он умеет распозновать всякие хрени, и вообще вроде как был задуман как тупая кликалка и заполнялка форм для автоматизации всяческих кликательно-заполнятельных процессов).
Если не секрет, что это за игра для которой ты бота пишешь?
Не секрет - PartyPoker.
2.Для отслеживания игровой ситуации необходимо анализировать текущееРешил писать на C++.
изображение на экране. Как его получить?
3.Необходимо распознавать образы. Все изображения карт есть, нужно только
распознавать текстовую информацию, а карты каким-то образом сравнивать.
Подскажите какие-нибудь, желательно стандартные, библиотеки предназначен-
ные для подобных целей.
Не мог бы кто-нибудь все таки ответить на эти вопросы.
Спроси Павловского
может от те чё-нить интересное скажет про технологию
может от те чё-нить интересное скажет про технологиюОставить комментарий
istran
От нечего делать, я решил написать бота для карточной игры.C# знаю слабо, поэтому писать буду на нем. Вот.
У меня сразу-же возникло несколько проблем:
1.Игрой обязательно надо управлять мышкой. Поделитесь опытом, как это
сделать в C#.
2.Для отслеживания игровой ситуации необходимо анализировать текущее
изображение на экране. Как его получить?
3.Необходимо распознавать образы. Все изображения карт есть, нужно только
распознавать текстовую информацию, а карты каким-то образом сравнивать.
Подскажите какие-нибудь, желательно стандартные, библиотеки предназначен-
ные для подобных целей.
Извините за столько вопросов, просто интернета нет, а MSDN на английском.
Жду ваших комментариев.