Flood-It-Bot/main/RobotUtils.java
2012-01-11 16:55:25 +02:00

79 lines
2.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main;
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
/**
* Работа с классом Robot.
* @author aNNiMON
*/
public class RobotUtils {
private static final int CLICK_DELAY = 300;
private Robot robot;
/**
* Конструктор
* @throws AWTException ошибка инициализации Robot
*/
public RobotUtils() throws AWTException {
robot = new Robot();
}
/**
* Кликнуть в нужную точку
* @param click точка по которой нужно кликнуть
*/
public void clickPoint(Point click) {
robot.mouseMove(click.x, click.y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(CLICK_DELAY);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
/**
* Автоматически воспроизвести заданную последовательность нажатий
* @param buttons координаты точек, куда следует нажимать
* @param result последовательность id для указания на нужную кнопку
*/
public void autoClick(Point[] buttons, byte[] result) {
for (int i = 0; i < result.length; i++) {
clickPoint(buttons[result[i]]);
}
}
/**
* Автоматическое написание сообщения
* @param text "печатаемый" текст
*/
public void writeMessage(String text) {
for (char symbol : text.toCharArray()) {
boolean needShiftPress = Character.isUpperCase(symbol) && Character.isLetter(symbol);
if(needShiftPress) {
robot.keyPress(KeyEvent.VK_SHIFT);
}
int event = KeyEvent.getExtendedKeyCodeForChar(symbol);
try {
robot.keyPress(event);
} catch (Exception e) {}
if(needShiftPress) {
robot.keyRelease(KeyEvent.VK_SHIFT);
}
}
}
/*
* Получение картинки размером [width x height] с экрана с позиции [x, y]
* Если width или height равны -1, то возвращаем весь экран.
*/
public BufferedImage getImage(int x, int y, int width, int height) {
Rectangle area;
if ((width == -1) || (height == -1)) {
area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
} else area = new Rectangle(x, y, width, height);
return robot.createScreenCapture(area);
}
}