我正在播放一個簡單的Flash遊戲要求玩家點擊多個快速移動目標的機器人,特別是這樣的:建議,關於如何提高點擊機器人性能
我當前算法是相當簡單:
- 捕獲通過像素屏幕圖像中的屏幕
- 環的圖像,並且與目標圖像的已知RGB值比較它們的RGB值
- 返回座標那裏找到匹配
- 將鼠標指針移動到座標,然後點擊
對搜索算法的代碼如下:
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%的目標。然而,它通常無法擊中快速移動的目標,並且將在屏幕上「追逐」它們。我假設這是因爲我的算法無法足夠快地找到它們。我試過增加像素步長,但似乎沒有明顯的效果。任何建議,將不勝感激,謝謝。
爲了更好的可靠性,您應該減少像素步長,而不是增加。以犧牲運行時間爲代價。 – 2012-02-15 23:46:44
目標是否可以直線移動?如果你錯過了會怎樣?你可以在你發現的點上點擊點擊嗎?也許你現在可以做你現在做的事情,但是如果你錯過了,那麼再拍一張截圖,並在你想點擊它時計算出目標的位置! – davidfrancis 2012-02-15 23:59:30
目標在任意方向移動,沒有任何處罰(你可以點擊任意次數),並且我已經每125ms調用一次findImage來更新屏幕圖像並檢查目標。你的霰彈槍方法聽起來不錯,但我會給它一個鏡頭,謝謝! – JHuynh 2012-02-16 00:12:13