Распознавание цветов / узоров на веб-странице - PullRequest
2 голосов
/ 20 апреля 2011

Я хочу попробовать создать приложение для обучения шахматам в качестве школьного проекта.Мой первый план состоял в том, чтобы просто противопоставить этот ИИ самому себе, но чтобы действительно показать, был ли он успешным, нужно уметь показать, насколько хорошо он прогрессирует.Для этого я хочу играть в рейтинговые игры на таких сайтах, как chess.com.Однако у них (пока) нет общедоступного API, я считаю.

Поэтому я хотел создать программу на Java, которая распознает цвета и изображения.Он сохраняет внутренний двумерный массив всех позиций и распознает фигуры на доске.Я думаю, что нашел способ сделать это в окне, используя что-то вроде Java Robot Class .

Однако я хотел бы открыть эту веб-страницу во внутреннем окне и продолжать делать это в фоновом режиме.Есть ли способ распознать цвета в собственном окне, без необходимости быть на переднем плане?

Редактировать: Я планирую использовать этот компонент браузера, который я только что нашел .Я заметил, что можно создать полностраничный снимок страницы и сохранить его как BufferedImage (?).Будет ли это легче сделать?

Редактировать 2: Я только что прочитал, что «Внешняя помощь от других людей, компьютеров / шахматных движков или настольных игр эндшпиля полностью запрещена».Я полагаю, что позволить компьютеру выполнять всю игру, безусловно, включает в себя это.Поэтому я мог бы попробовать использовать другой сайт, чтобы ответы, специфичные для chess.com, не помогли!

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Я не знаю, это помогает, но, может быть, вы можете взглянуть на проект Sikuli. http://sikuli.org/

Sikuli - это программа (и API) для взаимодействия с пользовательским интерфейсом. Например, вы можете написать скрипт для нажатия на изображение или кнопку в определенных условиях.

Особенно интересно для вас, есть интеграция с Java: http://sikuli.org/docx/faq/030-java-dev.html

Вот выдержка из веб-сайта, чтобы дать вам представление о коде, который вы можете написать.

РЕДАКТИРОВАТЬ : в этом коде важно отметить, что вы определяете новые шаблоны с изображениями. Sikuli сможет найти подходящие шаблоны.

import org.sikuli.script.*;

public class TestSikuli {

    public static void main(String[] args) {
            Screen s = new Screen();
            try{
                    s.click("imgs/spotlight.png", 0);
                    s.wait("imgs/spotlight-input.png");
                    s.type(null, "hello world\n", 0);
            }
            catch(FindFailed e){
                    e.printStackTrace();
            }
    }
}
3 голосов
/ 21 апреля 2011

Вы должны рассмотреть возможность игры на шахматном сервере, где доступен API и разрешены шахматные движки. Существует Internet Chess Club (ICC) , где вы должны заплатить, чтобы иметь учетную запись человека, а затем вы можете получить бесплатную учетную запись компьютера для вашего движка. Существует также бесплатный интернет-шахматный сервер (FICS) , где вы и ваш движок можете получить бесплатные аккаунты.

Обычно ICC предпочитают, потому что там уровень игроков выше, там играет множество международных мастеров и шахматистов.

Лучший способ взаимодействия с этими сайтами - реализовать протокол xboard . Это позволит вашим движкам играть через интерфейс Winboard или XBoard (среди прочего), а интерфейс этих тезисов можно использовать для подключения по FICS или ICC и автоматического воспроизведения там.

Я надеюсь, что эта помощь, даже если она не дает прямого ответа на вопрос.

2 голосов
/ 20 апреля 2011

Я не уверен, что вы вводите, но у вас есть два варианта:

  1. Вы можете создать изображение в формате PNG. Загрузите изображение в объект BufferedImage ( docs ) и проверьте его там. Вы можете использовать инструмент для создания снимков экрана.

  2. Похоже, chess.com использует HTML с JavaScript. Вы можете скачать HTML, используя HttpComponents и изучить его, чтобы увидеть, где находятся эти фрагменты. Это дает дополнительное преимущество, заключающееся в том, что вам не нужно угадывать, какая часть идет куда, поскольку HTML содержит информацию об источнике.

...