Список задач
Задача
Проверка решения
Система DCES Клиентская часть Серверная часть Плагин на Java Плагин на php
Система DCES Общие компоненты для всех соревнований: Регистрация пользователей Передача данных Шифрование данных в процессе обмена Сообщения об ошибках И другое
Плагин клиенской и серверной части Клиентский плагин Отображение задачи Возможность ввода решения Передача решения Прием ответа от сервера и реакция на него Серверный плагин Проверка решения участника
Процесс разработки клиентского плагина Разработка плагина клиента с использованием подключенного DCES API Отладка его с помощью эмулятора
Методы плагина стороны клиента //плагин должен вернуть JPanel, на котором он рисуется public JPanel getPanel(); //вызывается, когда пользователь переключается на плагин public void activate(); //Вызывается, когда пользователь переключается с этого плагина на какой-то другой public void deactivate(); } //Установить заголовок задачи. Заголовки задач чаще всего располагаются на кнопках выбора задач public void setTitle(String title); //Посылка решения участника и получение ответа. Ответ и решение имеют тип HashMap. Плагины стороны клиента и сервера сами определяют, что содержится в этих HashMap. Метод бросает исключение, если отослать решение не удалось. Плагин не должен говорить пользователю, что что-то не так, система сама отображает всю информацию об ошибках. Плагин должен лишь принять к сведенью факт, что решение не было отослано public HashMap submitSolution(HashMap solution) throws GeneralRequestFailureException; //Это каталог, в котором хранится условие задачи. Условие автоматически //загружается с сервера. Плагин сам ответственен за //содержимое этого каталога, и должен знать в каких файлах какую информацию искать. //Писать или читать что-то вне этого каталога крайне не рекомендуется public File getProblemFolder(); //Каждая задача имеет имя, установленное при настройке контеста. Метод возвращает имя задачи. public String getProblemName();
Клиентский плагин Отсылает "answer" => Получает в ответ "result"=>"accepted" "result"=>"wrong answer"
Отладка плагина public class TestPlugin { public static void main(String[] args) { //создаем эмуляцию сервера //создаем эмулятор сервера ServerPluginEmulator serverEmulator = new MYServerPluginEmulator(); //создаем окно для отладки PluginBox box = new PluginBox( Main.class, //класс с отлаживаемым плагином serverEmulator, "Задача"); //делаем так, чтобы после закрытия окна программа закрывалась box.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //показываем окно на экране box.setVisible(true); }
Отладка плагина Состав класса MYServerPluginEmulator(); Правильный ответ Имя папки с заданием для вывода Сравнение полученного ответа от плагина с верным Генерация ответа плагину обратно