我有一个游戏,我正在尝试自动化。游戏的工作方式如下:屏幕上有一些灯泡,只有一个灯泡点亮。按下它时,另一个亮起。如果按下错误的灯泡,你会受到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 ++代码的东西之后,我发现它的性能非常平庸。但也许为每个灯泡编写一个脚本以使其更快将有所帮助。我尝试在Linux和Windows计算机上运行Selenium脚本但没有任何成功。
编辑:您会认为C ++几乎可以立即按下按钮,但事实并非如此。那么延迟来自哪里呢?
答案 0 :(得分:0)
我使用kantu selenium IDE for chrome创建了一个脚本,因为它支持while/endwhile。使用Pause 50
命令,我获得 180 的分数,并且更可靠。没有停顿,我甚至得到了&gt; 280分,但有时这太快了,游戏就会挂起; - )
以下是我的脚本,您可以将此代码直接复制并粘贴到&#34;源视图(JSON)&#34; kantu IDE的标签。
{
"CreationDate": "2018-5-5",
"Commands": [
{
"Command": "store",
"Target": "fast",
"Value": "!replayspeed"
},
{
"Command": "open",
"Target": "(URL HERE)",
"Value": ""
},
{
"Command": "click",
"Target": "link=Start!",
"Value": ""
},
{
"Command": "while",
"Target": "3 > 1",
"Value": ""
},
{
"Command": "clickAt",
"Target": "css=#game > ul > li.active",
"Value": "87,85"
},
{
"Command": "comment",
"Target": "Pause => Slow down a bit...",
"Value": ""
},
{
"Command": "pause",
"Target": "50",
"Value": ""
},
{
"Command": "endWhile",
"Target": "",
"Value": ""
}
]
}
以下是截图:
感谢您分享网址。这很有趣:)