Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2015, 21:29   #11
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Выложи хоть образец (скрин) этих стрелок.
FaTaL вне форума Ответить с цитированием
Старый 12.05.2015, 21:36   #12
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

Подсказали библиотеку FastDIB, сейчас буду смотреть что за чудо, пример понравился)
Должно быть имя? вне форума Ответить с цитированием
Старый 12.05.2015, 21:38   #13
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Выложи хоть образец (скрин) этих стрелок.
Хорошо, держите
Изображения
Тип файла: png s-452.png (21.6 Кб, 133 просмотров)
Должно быть имя? вне форума Ответить с цитированием
Старый 12.05.2015, 21:55   #14
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Ну и зачем какие-то библиотеки, по белым пикселям определяй направление))
ДралсяСошибками вне форума Ответить с цитированием
Старый 12.05.2015, 22:13   #15
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

Цитата:
Сообщение от ДралсяСошибками Посмотреть сообщение
Ну и зачем какие-то библиотеки, по белым пикселям определяй направление))

И как это сделать, не учитывая что на скрине будет несколько миллионов разных пикселей ? Я думаю надо найти нужную область, вырезать как на скрине, который я приложил ранее. И потом как то определить слева на право, все стрелки. Пока идей нет
Должно быть имя? вне форума Ответить с цитированием
Старый 12.05.2015, 22:42   #16
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

смотрите там примеры, что-то сочинить можно:

там есть пак компонентов, возможностью Ваших запросов
beegl вне форума Ответить с цитированием
Старый 12.05.2015, 22:42   #17
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

это игра вероятно полноэкранная значит на твоем экране(одном единственном) она принимает фиксированные и ЗАРАНЕЕ известные размеры (разрешение экрана) а стало быть и стрелки имеют ЗАРАНЕЕ известные позиции (т.е. их можно ВЫЧИСЛИТЬ заранее и не в программе а ручками на том же скрине) и теперь задав в программе их ВЫЧИСЛЕННЫЕ позиции нажимай уже известные точки.

или эти стрелки "бегают" по экрану?

а как должна определяться последовательность их нажатий? то же "анализом" скринов?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 12.05.2015, 22:56   #18
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
это игра вероятно полноэкранная значит на твоем экране(одном единственном) она принимает фиксированные и ЗАРАНЕЕ известные размеры (разрешение экрана) а стало быть и стрелки имеют ЗАРАНЕЕ известные позиции (т.е. их можно ВЫЧИСЛИТЬ заранее и не в программе а ручками на том же скрине) и теперь задав в программе их ВЫЧИСЛЕННЫЕ позиции нажимай уже известные точки.

или эти стрелки "бегают" по экрану?

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

Нет, не куда они не двигаются. Тока этих стрелок может быть от 1 до 10 по этому надо вычислять область. и потом из найденной области найти все последовательности
Должно быть имя? вне форума Ответить с цитированием
Старый 12.05.2015, 23:04   #19
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

определяйте разрешение экрана и зафиксируйте позиции стрелок или найдите пропорции. по поводу много милл пикселей цветов - переведите картинку в серый и тогда у вас будет только два цвета...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 13.05.2015, 02:09   #20
Должно быть имя?
Пользователь
 
Регистрация: 11.04.2015
Сообщений: 68
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
определяйте разрешение экрана и зафиксируйте позиции стрелок или найдите пропорции. по поводу много милл пикселей цветов - переведите картинку в серый и тогда у вас будет только два цвета...
Есть большой смысл захватить изображения самого окна, а не экрана Так я и поступил, осталось тока определиться с алгоритмом поиска

Скрин окна очень быстро делается, уже радует

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Vcl.Forms, Vcl.Dialogs, FastDIB;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;
  GameFast:TFastDIB;
implementation

{$R *.dfm}

procedure searchTest();
begin
  GameFast.SaveToFile('1.jpg');
end;

function CreateGameScr(var F:TFastDIB; GHandle:HWND; XSrc:Integer = 0;
                                                     YSrc:Integer = 0):Boolean;
var
  WR : TRect;
  DC : HDC;
begin
  Result := false;
  if IsWindow(GHandle) then begin
    GetWindowRect(GHandle, WR);
    F := TFastDIB.Create(WR.Right  - WR.left, WR.Bottom - WR.Top, 24);
    DC := GetDC(GHandle);
    Result := (DC <> 0);
    If Result then begin
      BitBlt(F.hDC, 0, 0, F.Width, F.Height, DC, XSrc, YSrc, SRCCOPY);
      ReleaseDC(GHandle, DC);
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  GameHandle:HWND;
  IsGame:Boolean;
begin
  GameHandle := FindWindowA('5th Street', nil);
  if not CreateGameScr(GameFast, GameHandle) then begin
    ShowMessage('Игра не найдена!' + #10#13 + 'Попробуйте ее открыть');
    Application.Terminate;
  end else searchTest();
end;

end.

А что если искать определенный пиксель, и к примеру от него делать отпору на еще два - три пикселя ?

Последний раз редактировалось Должно быть имя?; 13.05.2015 в 02:12.
Должно быть имя? вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с изображениями ignat129 Общие вопросы C/C++ 1 11.04.2012 00:05
Библиотека для работы с изображениями saippuakauppias Visual C++ 10 20.02.2011 20:40
работа с изображениями викталик Помощь студентам 0 03.05.2009 23:58
Методы определения контуров при работе с изображениями Евгений4 Помощь студентам 0 03.05.2009 16:51