Skip to content

slavikus/tournament

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tournament - программа для ведения турнира по сквошу

russian

Кросс-платформенная программа для ведения турниров. При создании нового турнира загружается список игроков с их рейтингом и программа автоматически создаёт группы. В ходе ведения турнира администратор заносит результаты игр. После окончания этапа создаются новые сетки и т.д., до розыгрыша всех мест. По результатам матчей пересчитывается рейтинг игроков по системе, близкой к Эло (https://ru.wikipedia.org/wiki/Рейтинг_Эло).

Доступны системы розыгрыша:

  • олимпийская система (playoff)
  • олимпийская система с квалификацией
  • олимпийская система с квалификацией в виде "кругового" (round-robin) этапа

В данный момент поддерживается только сквош. Для использования программы в других видах спорта потребуются доработки.

Написана на c++ с использованием framework'а qt4/qt5. Собирается под win/mac/linux.

Немного истории

Программа появилась при поддержке инициативной группы Санкт-Петербургской сквош-лиги - Татьяны Никитиной и Александра Постникова. Идея создания возникла после того, как автор увидел муки организаторов, испытываемые каждый раз при подсчёте рейтинга.

После того, как были достигнуты первые шаги в автоматизации ведения турнира, к проекту подключился @slavikus и разработал сайт http://squashspb.ru, который импортирует результаты турнира и отображает в виде красивых табличек. Сайт хранит базу игр и турниров, а также базу игроков. Доступна онлайн-регистрация на турниры.

С чего начать?

Скачайте последнюю версию для вашей операционной системы отсюда: https://github.com/yapavelkurochkin/tournament/releases

Для создания турнира потребуется список игроков с рейтингом каждого. Если игрок только начинает играть, рейтинг считается равным нулю. Список выглядит таким образом:

Иванов Иван, 40.4
Петров Пётр, 30.4
Сидоров Коля, 35.7
...

Программе список "скармливается" в виде простого текстового файла.

Итак, открываем программу, создаём новый турнир (Tournament->New), кликаем по пустой таблице и загружаем список игроков.

Теперь нужно выбрать систему розыгрыша. Обычно организаторы опираются на количество матчей, сыгранных каждым игроком и всеми игроками вместе. Программа рассчитывает общее количество игр и выводит его под таблицей. Описание систем розыгрышей см. ниже.

Когда с системой определились, нажимаем OK и поехали! В созданных таблицах заполняем результаты игр и радуемся жизни.

В любой момент можно посмотреть на очки, заработанные каждым игроком. Для этого нужно выбрать Tournament->Ratings.

Системы розыгрышей

playoff

Самая простая система. В википедии: https://ru.wikipedia.org/wiki/Олимпийская_система

В программе реализован плейофф с розыгрышем всех мест. То есть програвший игрок не выбывает, а продолжает играть с проигравшим в соседней паре.

При посеве игроков сначала происходит сортировка по рейтингу (от большего к меньшему), а потом самый сильный играет с самым слабым, второй - с предпоследним и так далее. На втором этапе игроки (отдельно победители и програвшие) встречаются по такому же принципу.

Размер группы должен быть кратен 2, поэтому при нехватке игроков (а это частая ситуация) сетка заполняется игроками под кодовым названием BYE. Матч с таким игроком всегда заканчивается победой, но рейтинг при этом остаётся неизменным.

Пример: игроков 13 человек. Создаём турнир playoff с размером 16. Поскольку игроков не хватает, появляются BYE. В итоге трое сильнейших автоматически проходят на следующий этап (они попадают на BYE). Остальные - разыгрывают первый этап.

playoff с квалификацией

Эта система практически идентична playoff, за исключением того, что имеет предварительный этап квалификации, где игроки борются за право войти в группу playoff. Обычно в этой системе игроков больше, чем размер playoff, поэтому те, у кого минимальный рейтинг, разыгрывают возможность участвовать в дальнешей битве. Подобного результата можно добиться, использовав playoff, но в playoff с квалификацией очки за квалификационные игры (и утешительные для тех, кто не попал в основную сетку) не добавляются.

Пример: игроков 18. Выбираем playoff c квалификацией с размером 16. В итоге 4 игроков с минимальным рейтингом разыгрывают этап, по результатам которого двое победителей попадают в сетку playoff, а двое проигравших играют утешительную игру.

playoff с круговым этапом

В этом этапе перед playoff игроки разбиваются на 2/4/8 групп и в каждой группе играют "каждый с каждым" (round-robin). В playoff выходят два сильнейших игрока из каждой группы.

Определение мест в круговой группе происходит по сумме набранных матчей, геймов и очков.

Первый игрок из группы всегда попадает в playoff на второго игрока из другой группы. Группы встречаются по принципу ABCD, ACBD или ADBC - это выбирается в меню Breaking.

Ведение турнира

Одна работающая программа позволяет вести один турнир. Если ведутся несколько турниров параллельно (например, разные категории), то нужно запустить несколько программ.

Save/Load

После введения результатов программа автоматически сохраняет результаты в домашнем каталоге пользователя. При следующем запуске загружаются последние сохранённые результаты.

В любой момент можно сохранить турнир в trn-файл или загрузить его из файла.

Redo/Undo

Чтобы отменить введённые результаты (скажем, ошиблись при вводе), можно воспользоваться Edit->Undo. Аналогично, чтобы вернуть введённые результаты - Edit->Redo.

Экспорт результатов

Пока что результаты экспортируются только в CSV-файл с разделителем '|'. На подходе (в следующих релизах) экспорт в json и автоматическое выкладывание результатов на http://squashspb.ru.

Расчёт рейтинга

По результатам каждой игры рассчитываются очки, которые добавляются к текущему рейтингу игрока. Принципы ведения рейтинга описаны на сайте squash-game.

Этот рейтинг похож на систему Эло, см. https://ru.wikipedia.org/wiki/Рейтинг_Эло.

Плюшки

  1. На круговом этапе игрока можно добавить или удалить. Часто турнир уже забит, все знают сетку, а игроки перед самым турниром сообщают, что не могут прийти.

Код, сборка

Код написан на C++ с использованием библиотеки Qt (4.8, 5.4) и собирается под linux/macosx/win

Подробно сборка описана в файле BUILD.md

About

QT Desktop tool for tournament managing (game and match scoring, tournament tree building)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 94.0%
  • C 4.4%
  • QMake 1.4%
  • Makefile 0.2%