我试图让机器人玩基于网络的飞鸟游戏。我已经采用以下方法来玩游戏:
static double play() {
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
Rectangle gameZone = new java.awt.Rectangle(11, 108, 522, 620);
BufferedImage image = robot.createScreenCapture(gameZone);
double[] data = detection(image);
double cbx = data[0];
double cby = data[1];
double ctx = data[2];
double cty = data[3];
if (cby != 0 && cty != 0 && cby != 440.4140316205534) {
if (cby > 550) {
robot.mousePress(InputEvent.BUTTON1_MASK);
pause();
robot.mouseRelease(InputEvent.BUTTON1_MASK);
System.out.println("JUMP 1: " + cbx + " " + cby + " " + ctx
+ " " + cty);
} else if (cby - cty > 45 && ctx - cbx < 100) {
robot.mousePress(InputEvent.BUTTON1_MASK);
pause();
robot.mouseRelease(InputEvent.BUTTON1_MASK);
System.out.println("JUMP 2: " + cbx + " " + cby + " " + ctx
+ " " + cty);
} else if (cby - cty > 75) {
robot.mousePress(InputEvent.BUTTON1_MASK);
pause();
robot.mouseRelease(InputEvent.BUTTON1_MASK);
System.out.println("JUMP 3: " + cbx + " " + cby + " " + ctx
+ " " + cty);
}
}
return cby;
}
方法&#34;检测&#34;检测到鸟和管之间空间的中心。虽然屏幕捕捉的表现相当不错,但是播放的时间只有30多分钟。运行的方法(大约30fps),检测到的屏幕似乎延迟了几百毫秒。
我的意思是当程序检测到跳跃状态并点击鼠标时,该鸟已经在地面上坠毁。有没有办法在java中实时捕获屏幕几乎没有延迟(几十毫秒可能是可以接受的)?
感谢大家的帮助。