Skip to content

k806house/KGS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KGS

Необходимо при помощи API KGS создать лидерборд (рейтинговую таблицу) и отобразить игры для клиента. Формирование лидерборда и отображение игр делается для ТОП-100 игроков. Работа производится только с последними двумя играми каждого игрока.

Требования к лидерборду:

  • Отсортированные партии (2 последние игры ТОП-100 пользователей)
  • Описание позиции рейтинга: имя игрока 1, имя игрока 2, счёт партии, длительность партии, цвет камней игрока 1, цвет камней игрока 2, дополнительная аналитика партии.

Требования к отображению игры:

  • Переход по клику на позицию из рейтинга на экран, где можно посмотреть партию
  • Отображение игровой доски
  • Отображение последовательности ходов
  • Возможность прокручивать вперед/назад ход игры

Решение: Используемый стек технологий - React + Bootstrap + Snap.svg Был написан скрипт parsePlayers, для обращения к API. Работа с сетью реализована на библиотеке axios, парсинг данных из html работает на jsdom Сначала мы получаем данные о топ сто играаков, для этого загружается и парсится таблица с топом, из нее вынимаются имена лидеров. Для каждого лидера формируется запрос на получение архива его игор. Класс для получения данных из API немного сложнее необходимого (хватило бы одной функции, даже без класса), это сделано для возможного будущего расширения его функционала и использования как основного клиента для KGS API. Все запросы отправляются пачкой, асинхронно, это сделано для более эффективного использования сетевых ресурсов. Данные о играх переводятся во внутреннее представление (класс Games) и сортируются по дате. На самом деле сртировка не обязательна, эффективнее просто найти две игры, но количество игр не столь велико, потому выбор сделан в пользу общности и расширяемости кода, нежели небольшого выигрыша по времени работы. Файлы игор загружаются отдельно, лениво, чтобы не выполнять лишних запросов и не потреблять слишком много памяти. Скрипт полностью рабочий, выполняется с ноды, но из-за cors-политик вышеупомянутого апи, демо было записано с испольлзованием тестовых данных и парсинга.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published