отвечать на цветные события с Java - PullRequest
0 голосов
/ 31 января 2012

Я строю Java-приложение для решения головоломок. То, как я его кодирую, в основном программа сделает снимок экрана, найдет пиксель на снимке экрана и переместит мышь через функцию робота в эту позицию на рабочем столе. Я понимаю теорию создания снимка экрана, сохранения его в массиве, исследования массива до тех пор, пока не появится всплывающий пиксель с нужной цветовой комбинацией, и перемещения мыши в эту позицию на экране, однако я не могу за всю жизнь получить код вниз. Если кто-то знает или может собрать пример кода, который делает снимок экрана, сохраняет его в массиве (или устройство хранения, которое я не знаю, лучше ли массив для этого конкретного использования), находит пиксель из этого массива, перемещает мышь. в пиксельную позицию, а затем очищает массив, я был бы удивительно великолепен, потому что это сводит меня с ума!

пока у меня есть:

public static void main (String [] args) генерирует исключение {

Robot robot = new Robot();

{
private static Rectangle rectangle = new Rectangle(0, 0, 1075, 700);

{
    BufferedImage image = r.createScreenCapture(rectangle);
    search: for(int x = 0; x < rectangle.getWidth(); x++)
    {
        for(int y = 0; y < rectangle.getHeight(); y++)
        {
            if(image.getRGB(x, y) == Color.getRGB(195, 174, 196))
            {
                Robot.mouseMove(x, y);
                break search;
            }
        }
    }
}

}

Я получаю три ошибки:

  1. недопустимое начало выражения, индикатор указывает на сегмент кода get ниже

    частный статический прямоугольник прямоугольник = новый прямоугольник (Toolkit.getDefaultToolkit (). GetScreenSize ());

  2. недопустимое начало выражения, индикатор указывает на размер в сегменте кода ниже

    закрытый статический прямоугольник прямоугольник = новый прямоугольник (Toolkit.getDefaultToolkit (). GetScreenSize ());

  3. ; ожидаемый индикатор, указывающий на прямоугольник прямоугольника

    закрытый статический прямоугольник прямоугольник = новый прямоугольник (Toolkit.getDefaultToolkit (). GetScreenSize ());

1 Ответ

1 голос
/ 31 января 2012

Создание снимка экрана и зацикливание, хотя это не так сложно. Javadoc для GraphicsDevice расскажет вам, как получить правильный размер экрана.

Единственное, что я не думаю, что вы можете сделать, это отвечать на "цветные события". Вы можете опросить экран, чтобы увидеть, когда цвет изменился.

import java.awt.Color;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;

public class FindColor
{
    private static Rectangle rectangle = new Rectangle(800, 600);

    public static void main(String[] args) throws Exception
    {
        Robot r = new Robot();
        BufferedImage image = r.createScreenCapture(rectangle);
        search: for(int x = 0; x < rectangle.getWidth(); x++)
        {
            for(int y = 0; y < rectangle.getHeight(); y++)
            {
                if(image.getRGB(x, y) == Color.BLACK.getRGB())
                {
                    r.mouseMove(x, y);
                    System.out.println("Found!");
                    break search;
                }
            }
        }
    }
}

-сделать, так как вопрос был расширен- Вам не нужно записывать изображение на диск, если вы собираетесь проверить его тут же. У BufferedImage уже есть способ доступа к отдельным пикселям, поэтому я не думаю, что есть необходимость преобразовывать данные пикселей в массив.

...