У меня есть игра, которую я пытаюсь автоматизировать. Игра работает так: на экране есть несколько лампочек, и только одна из них горит. Когда вы нажимаете его, загорается еще один. Если вы нажмете не ту лампочку, вы будете оштрафованы на 5 секунд, и в итоге вы получите 60 секунд.
Мне удалось набрать 90 очков на телефоне. Однако я хотел бы получить более 150 или, по крайней мере, приблизиться.
Итак, я написал эту программу на C ++, но она набирает всего около 85 баллов.
#include <bits/stdc++.h>
#define _WIN32_WINNT 0x0500
#include"windows.h"
using namespace std;
inline bool if_yell(HDC &dc, int x, int y){
COLORREF color = GetPixel(dc, x, y);
if( (int)GetRValue(color)==251 && (int)GetGValue(color)==190 &&
(int)GetBValue(color)==43)return 1;
return 0;
}
int px[]={327,1014,508,849,332,1014,331,1015,501,849,670,676,564,689},py[]={214,214,385,386,558,558,903,901,731,730,561,904,657,891};
int main()
{
HDC dc = GetDC(NULL);
POINT _cursor;
COLORREF color;
int ls=-1;
while(1){
for(int i=0;i<14;++i){
if(if_yell(dc,px[i],py[i]) && ls!=i){
INPUT Inputs[3] = {0};
Inputs[0].type = INPUT_MOUSE;
Inputs[0].mi.dx = px[i]*34; // desired X coordinate
Inputs[0].mi.dy = py[i]*61; // desired Y coordinate
Inputs[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;
Inputs[1].type = INPUT_MOUSE;
Inputs[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
Inputs[2].type = INPUT_MOUSE;
Inputs[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(3, Inputs, sizeof(INPUT));
ls=i;
}
}
}
return 0;
}
Тогда я попытался использовать Selenium IDE. Я записал себя, играя, и вот что получилось. Я добавил больше одинаковых команд и запустил его.
Это довольно быстро. Он набирает около 102 баллов, но я бы хотел получить еще лучший результат, если это возможно. Пожалуйста, помогите мне.
Я тоже думал об использовании AutoHotKey. После реализации чего-то похожего на код C ++ я обнаружил, что его производительность довольно посредственная. Но, возможно, поможет написание сценария для каждой лампочки, чтобы она работала быстрее. Я попытался запустить скрипт Selenium на компьютере с Linux и Windows, но безуспешно.
Редактировать: Вы могли бы подумать, что C ++ будет нажимать кнопку почти мгновенно, но это не так. Так откуда же взялась задержка?