好吧,我正在玩一个在线 flash 游戏,你必须尽快点击白框。我如何使用 Java 将其自动化?盒子的位置是随机的。
我尝试使用 Robot
类并使用 getPixelColor
,但这太慢了。
那么我需要做的是:
- 我的游戏窗口是 500x500 窗口,所以从中获取像素
- 找到 5x5 个白框
- 点击它们
有什么建议吗?
最佳答案
您可以使用 Rectangle类,使用“包含”方法。
或者您可以创建自己的,基本上是这样工作的:
- 跟踪您的盒子、它们当前的 (x, y) 位置和它们的(宽度、高度)
- 使用 mouseClicked() 事件获取点击的 (x, y) 位置
- 在 mouseClicked() 内部,遍历所有框,并检查鼠标点击 (x, y) 是否在框内
例如,如果屏幕上有两个框:
boxA: (x, y, width, height) = (0, 0, 10, 10)
boxB: (x, y, width, height) = (20, 20, 10, 10)
这会为您提供两个框,每个框的大小为 10x10 像素。 “boxA”的左上角位于 (0, 0),“boxB”的左上角位于 (20, 20)。
如果“mouseClicked”事件的 (x, y) 坐标是 (7, 7),那么它在“boxA”的范围内(因为点 (7, 7) 在 (0, 0) 和 ( 10, 10)
如果“mouseClicked”事件的 (x, y) 坐标是 (23, 25),那么它在“boxB”内,因为 (23, 25) 在 (20, 20) 和 (30, 30) 之间
您说得对,getPixelColor 对于您要执行的操作来说太慢了。遍历方框列表会快很多。
如果您想深入研究一个更深入的例子,这里有一篇关于 collision detection 概念的文章.
关于Java Image 获取桌面图像并创建宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5849844/