我想在java中编写一个程序,可以“击败”Simon说(在某些网站上我的浏览器(!)中运行)。
所以我的java应用程序必须:
我不知道如何在后台运行我的应用程序(1.),我可以做一些简单的计数。但我希望它实际上做的事情就像用鼠标移动到正确位置然后点击它(在后台运行时)。
我会通过使用Robot java类[createScreenCapture()获取BufferedImage然后分析它来实现第二个任务] 如果您有更好的想法,请告诉我。
第3个任务也可以通过使用mouseMove(int x,int y)和mousePress(int按钮)在Robot类中实现。
所以我希望你能帮助我解决这个背景问题,并原谅我糟糕的英语技能。
到目前为止我的代码:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.image.*;
import java.awt.Rectangle;
import java.util.ArrayList;
public class BeatSimon {
private ArrayList<Integer> order;
private Robot robot;
private int round;
public BeatSimon() throws AWTException, InterruptedException {
order = new ArrayList<Integer>();
robot = new Robot();
round = 1;
start();
}
public void start() throws InterruptedException {
BufferedImage aktImage;
order = new ArrayList<Integer>();
aktImage = robot.createScreenCapture(new Rectangle(0, 0, 1920, 1080));
// get the order
for (int i = 0; i < this.round; i++) {
if (aktImage.getRGB(0, 0) == 0) // I don't have the specific coordinates or color yet
order.add(0);
else if (aktImage.getRGB(1, 1) == 1)
order.add(1);
else if (aktImage.getRGB(2, 2) == 2)
order.add(2);
Thread.sleep(1000);
}
//press the fields in the right order
for (int i = 0; i < this.round; i++) {
if (order.get(i) == 0) {
robot.mouseMove(0, 0);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} else if (order.get(i) == 1) {
robot.mouseMove(1, 1);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} else if (order.get(i) == 2) {
robot.mouseMove(2, 2);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
Thread.sleep(1000);
}
this.round += 1;
start();
}
}