Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
#1

Программно найти кнопку в flash'e, подкиньте идею) - C++

30.12.2010, 16:58. Просмотров 1231. Ответов 14
Метки нет (Все метки)

Пишу бота для одной браузерной игры, написанной на флеше. Собственно основную часть написал, все работает) Но есть одна проблема, в некоторый момент игры появляется окошко с неким сообщением и его нужно закрыть, чтоб игра продолжилась. Так вот я ни как не могу "найти" кнопку - "крестик", чтоб закрыть окошко. В игре есть другие кнопки для самого процесса игры, т.к. они большие и одного цвета, то я легко нашел их по пикселям. Но в этом окне кнопка - крестик не содержит внутри себя идущих подряд пикселей одного цвета, достаточного для оперделения , что это крестик (во флеши же появляющееся окошко не является самостоятельным элементом и ему нельзя послать сообщение, поэтому приходится вот так вот изваращатся)) Вот собственно суть проблемы.
Есть идея в которой я очень сомневаюсь - это сделать скриншот экрана, в граф.редакторе вырезать этот крестик, сохранить как отдельный рисунок в папку с ботом, ну и потом сравнивать попиксельно окно с игрой и этот рисунок на предмет "одинаковости". Но т.к. я ни чего не знаю о форматах хранения изображений и о flash'е, то я сомневаюсь, что так вообще получится.
Подкиньте какую-нибудь идею, я в жизни ботов не писал, вот решил попоробовать)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2010, 16:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программно найти кнопку в flash'e, подкиньте идею) (C++):

Подкиньте идею - C++
Здравствуйте. Пишу потихоньку свой фреймворк для разработки игр. В главном цикле связанной список игровых обьектов обрабатывается: логика,...

Подкиньте идею:) - C++
В общем хочу написать прогу для того чтобы обмануть систему проверки на плагиат контрольных в формате doc или docx, программа которая...

подкиньте идею плиз, а то чёто не вьезжаю - C++
1)Проверить, все ли строки матрицы содержат хотя бы один положительный элемент. Если да, то изменить знаки всех элементов матрицы на...

Подкиньте идею игры или программы - C++
я занимаюсь C++) в TurboC30) могли бы подкинуть идей какой нибудь игрушки или программки) программки даже более интересно) но я очень мало...

Пожалуйста, подкиньте идею для проекта - C++
Нужно написать программу на С++ с использованием функций и динамических массивов(Начальный уровень),может игру,но не крестики нолики или...

Программно загрузить веб-страницу, вставить текст и программно нажать кнопку - C++
Здравствуйте ув. Програмеры. Каким образом можно згрузить веб страницу, вставить в поле на странице текст из текстового файла и...

14
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.12.2010, 17:17 #2
Поскольку я тоже никогда этим не занимался и даже об этом не задумывался, то, пока не придёт кто-нибудь более в этом вопросе подкованный - будем извращаться. Первая идея - как и ваша - сравнивать с эталоном. Вторая (если окно это появляется постоянно в одном месте) - просто запомнить координаты крестика (абсолютные значения) и жать на эти координаты.
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
30.12.2010, 17:33  [ТС] #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Первая идея - как и ваша - сравнивать с эталоном
Попробую, но совсем не уверен.

Цитата Сообщение от silent_1991 Посмотреть сообщение
Вторая (если окно это появляется постоянно в одном месте)...
В том то и дело, что окно появляется в одном месте (по центру экрана), но в зависимости от объема сообщения, написанного в этом окне, крестик меняет свое расположение (выше, ниже, левее, правее).

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
как и ваша
мы же, вроде как, на "ТЫ" )))

0
silent_1991
30.12.2010, 17:34
  #4

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
мы же, вроде как, на "ТЫ" )))
О'кей))) Привычка)))

0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
30.12.2010, 18:12 #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
В том то и дело, что окно появляется в одном месте (по центру экрана), но в зависимости от объема сообщения, написанного в этом окне, крестик меняет свое расположение (выше, ниже, левее, правее).
Но крестик, на сколько я понимаю, всегда находится на определённом расстоянии от правого верхнего угла. То есть задача сводится к определению размеров окошка с сообщением...
1
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.12.2010, 18:24 #6
easybudda, я тоже уже подумал об определении размеров окна. Скажем, исходя из ширины (как я понял, она постоянная) и количества строк сообщения.
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
30.12.2010, 18:33  [ТС] #7
Цитата Сообщение от easybudda Посмотреть сообщение
То есть задача сводится к определению размеров окошка с сообщением
Да, точно, можно попробовать определить координаты всего окошка, ну а там и крестик от угла найти. Внутри окошко серого цвета, так что по пикселям можно его найти.

Цитата Сообщение от silent_1991 Посмотреть сообщение
Скажем, исходя из ширины (как я понял, она постоянная) и количества строк сообщения.
Нет, ширина и высота окошка не постояная, но оно выскакивает всегда примерно в одном месте, так, что радиус поиска где-то 400 на 400 пикселей в определенном месте.

Вобщем попробую окошко распознать)

Не по теме:

что-то тафтологии много...



Добавлено через 2 минуты

Не по теме:

который день это пишу, забыл как по-русски говорить, все Си да Си ))

0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.12.2010, 18:39 #8
А оно квадратное? Просто если квадратное, можно из центра провести линию под углом 45 градусов к горизонту () и кликать по ней с определённым шагом (скажем, в половину радиуса крестика) в тех же самых 400 пикселях...
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
30.12.2010, 18:45  [ТС] #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
А оно квадратное?
Не, оно вообще всякое бывает, в зависимости от объема сообщения и еще там картинка может быть.
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
30.12.2010, 18:48 #10
Да чёрт подери, никак не попаду в точку
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
30.12.2010, 19:01 #11
Цитата Сообщение от Kastaneda Посмотреть сообщение
Не, оно вообще всякое бывает...
... круглое, треугольное...
На самом деле всё даже немного проще, чем кажется, если только окно точно по центру экрана появляется. Тогда учитывая, что у него наверняка есть заголовок, вниз экрана продолжается серый фон окна сообщения на величину, бОльшую, чем вверх как-раз на высоту заголовка. С шириной тоже проблем никаких - картинка если и есть, то наверняка не на вылет в окне, то есть вокруг неё ещё рамка фона присутствует, значит хотябы пиксель фона под ней должен быть. Если мы знаем нижний пискель окна, расстояние по горизонтали от центра в любую сторону на высоте этого пикселя, до изменения цвета пикселя, умноженное на два и будет шириной окна. А дальше всё совсем просто. Советую сначала на бумаге картинку нарисовать - так нагляднее...
0
Black Fregat
1395 / 1026 / 231
Регистрация: 31.05.2009
Сообщений: 4,276
31.12.2010, 12:00 #12
А на клавиши это окошко не реагирует? Часто флешка позволяет все кликабельные поля обойти клавишей табуляции
1
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
31.12.2010, 14:50  [ТС] #13
Black Fregat, это первое, что я попробовал. Не любое окно можно клавишей закрыть, так что нужен универсальный подход.

Не по теме:

Вчера вечером нашел небольшой баг в том, что написал, но на исправление ушло много времени, до сих пор алгоритм "долизываю", так что этим окошком еще не занимался, скорее всего завтра буду пробовать.



Добавлено через 1 минуту

Не по теме:

совсем забыл, ВСЕХ С НАСТУАЮЩИМ

0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
31.12.2010, 15:32  [ТС] #14
I 160, это что?

Добавлено через 12 минут
Цитата Сообщение от Black Fregat Посмотреть сообщение
клавишей табуляции
Я с первого раза как-то это не заметил))) Да, действительно, обходидит вообще все, но дело в том, что при разном типе окошек (с картинками, без картинок, с кнопками внутри, без и т.д.) чтоб добраться до крестика, нужно разное кол-во нажатий на tab. Поэтому похоже тоже не вариант.

Добавлено через 15 минут
Я придумал как это использовать. На крестик tab попадает всегда после определенной кнопки управления, а координаты этой кнопки всегда постоянные, так, что можно жать на tab и смотреть на границы этой кнопки (при наведение на нее tab'ом она будет выделена желтым цветом), после того, как эта кнопка выделелась, остается нажать 1 раз.
)))
Black Fregat, спасибо!
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
07.01.2011, 11:23  [ТС] #15
Кому интересно, что получилось, загляните в тему )))
0
07.01.2011, 11:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2011, 11:23
Привет! Вот еще темы с ответами:

Дождаться появления окна и программно нажать на кнопку в нем - C++
насколько это реально и что нужно сделать? В игре DOTA2 перед тем как начать играть,появляется окно в котором нужно выбрать...

Подкиньте идею - PHP
Привет всем. Не знаю получиться объяснить или нет, но попробовать надо. Дело в том, что мне надо создать такой модуль, при помощи которого...

Подкиньте идею! - Delphi БД
Существует база Access она управляется программой и будет лежать в сети. 1 Вопрос) как обезопасить сам файл базы данных ? 2 Вопрос)...

Подкиньте идею - SQL Server
В общем суть такая, есть столбец, к примеру, с 50 записями, 25 первых пустые, остальные заполнены числовыми данными, к примеру от 100 до...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru