C ++ и Selenium IDE недостаточно быстрые - PullRequest
0 голосов
/ 05 мая 2018

У меня есть игра, которую я пытаюсь автоматизировать. Игра работает так: на экране есть несколько лампочек, и только одна из них горит. Когда вы нажимаете его, загорается еще один. Если вы нажмете не ту лампочку, вы будете оштрафованы на 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 баллов, но я бы хотел получить еще лучший результат, если это возможно. Пожалуйста, помогите мне.

enter image description here

Я тоже думал об использовании AutoHotKey. После реализации чего-то похожего на код C ++ я обнаружил, что его производительность довольно посредственная. Но, возможно, поможет написание сценария для каждой лампочки, чтобы она работала быстрее. Я попытался запустить скрипт Selenium на компьютере с Linux и Windows, но безуспешно.

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

...