具有较少延迟的Java Robot screencapture替代品 - Flappy Bird bot

时间:2015-01-27 20:11:43

标签: java latency awtrobot

我试图让机器人玩基于网络的飞鸟游戏。我已经采用以下方法来玩游戏:

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中实时捕获屏幕几乎没有延迟(几十毫秒可能是可以接受的)?

感谢大家的帮助。

0 个答案:

没有答案