среда, 14 сентября 2011 г.

Написание бота для онлайн игры

 Не так давно, просматривая ленту на Хабре, наткнулся на такую вот статью. Бегло просмотрев её, я решил сделать подобное на своём родном языке Java. Сейчас постараюсь в точности описать ход своих мыслей и идей. Приступим.
 Первым делом нужно было узнать, умеет ли Java работать с мышкой? Интуиция выдала стопроцентный положительный результат, затем, через десять секунд был введён запрос в Google и получено подтверждение - в таких делах наш помощник это класс java.awt.Robot. Он умеет получать изображение с экрана, эмулировать нажатия клавиш и управлять мышью. То что нужно. Для начала решил освоить этот класс, для этого написал метод, который "набирал" переданный ему текст. Исходный код этого метода выглядит так:

/**
 * Автоматическое написание сообщения
 * @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);
        }
    }
}