gpt4 book ai didi

algorithm - 关于如何提高点击机器人性能的建议

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:50 25 4
gpt4 key购买 nike

我正在开发一个机器人,它可以玩一个简单的 Flash 游戏,要求玩家点击多个快速移动的目标,具体来说:

Click me!

我目前的算法相当简单:

  1. 截取屏幕图像
  2. 遍历屏幕图像中的像素并将它们的 RGB 值与目标图像的已知 RGB 值进行比较
  3. 返回找到匹配项的坐标
  4. 将鼠标指针移动到坐标并单击

搜索算法的代码如下:

    public Point findImg(BufferedImage img) {
screen = bot.createScreenCapture(screenRectangle); // Image of screen
int target = 2424318; // RGB value to look for
int rgb;

// Approximate boundaries (400,200) and (1000,700) of the flash game were
// hardcoded in
for (int i = 400; i < 1000; i += 5) {
for (int j = 200; j < 700; j += 5) {
rgb = -(screen.getRGB(i, j));
if (rgb == target) { // Target found
return new Point(i, j);
}
}
}
return null;
}

目前,该机器人能够击中大约 75% 的目标。但是,它经常无法击中移动速度更快的目标,并且基本上会在屏幕上“追逐”它们。我假设这是因为我的算法无法足够快地找到它们。我试过增加像素步长,但似乎没有明显效果。如有任何建议,我们将不胜感激。

最佳答案

您没有考虑到系统中的延迟(这是人类玩家几乎不自觉地做的事情)。 Flash 游戏可能会在收到点击帧后对其进行评估。双缓冲和垂直同步都会增加延迟。所有这些都需要在屏幕捕获可以抓取图像之前完成。

要击中移动速度更快的目标,您需要进行一些跟踪。如果你能弄清楚你的未命中在哪里,你就会知道它离目标有多远。否则,也许您的代码可以识别出连续未命中彼此接近的时间,并采取越来越长的步骤,直到您击中某些东西。

关于algorithm - 关于如何提高点击机器人性能的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com