Блог

Теперь модуль спортивных турниров mod_sport может отражать стадию плей-офф (playoff)

 

Модуль mod_sport – раздел управления стадией playoff турниров.
 
Как правило, каждый спортивный турнир делится на регулярную часть и стадию плей-офф (playoff), или, как в советские времена говорили - кубковая стадия, либо олимпийская система. Особенность стадии playoff состоит в том, что из большого количества команд регулярного чемпионата в стадию playoff выходит ограниченное количество команд. Они разыгрывают определенное количество мест, т.е., например, в чемпионате играют всего 32 команды, а занимаемые в турнире места занимают лишь несколько команд: 1-2 либо 1-4. Вне зависимости от спорта, только лишь организаторы того или иного турнира определяют, по какой схеме будет происходить стадия плей-офф чемпионата. Яркий пример – футбол в российском чемпионате премьер–лиги идет круговая стадия до самого финала, места распределяются по итогам регулярного чемпионата. В то время, когда чемпионат Европы проводится по ветке – сначала идет регулярный, деленный на группы турнир, а далее идет стадия playoff, на выходе которой только 4 места. В финале команды играют за 1-2 места и за 3-4, остальные команды выбывают, не заняв никаких мест.
 
Какая команда проходит в следующую стадию турнира выясняется всегда по-разному. Команды в игре встречаются один или несколько раз. Результат встреч двух команд может быть принят на основе нескольких игр, поэтому игры так и называются из серии playoff. Иногда играют до 2 побед. И та команда, которая выиграла в турнире 2 игры, серия прерывается, поскольку нет смысла играть дальше, потому что команда, которая набрала 2 очка, проходит дальше. Таким образом, стадия playoff отличается от регулярного чемпионата тем, что выходные результаты одних этапов являются входными для следующих этапов.
Playoff часто делится на стадии - этап playoff, который показывает, на какой стадии играют команды. Проще бывает назвать эти стадии: 1/32, 1/16, 1/8, ¼, полуфинал, финал. Например, 1/32. Это значит, что всего играет 64 команды, в следующую стадию выходят 32 команды. Все внимание спортивной общественности сводится к такой воронке, в конусе которой находится финал. Есть понятие, как сетка playoff –это тот путь, который проходят команды от начальной стадии до финала.
 
У каждого турнира есть флажок – началась или нет стадия playoff. Этот флажок внутренний, фактически он может показывать, например, отдельно закладку «Этап playoff». Фактически этот этап описывает серию playoff. У каждого этапа, кроме стандартных полей для этапа, например, «Название этапа», «Показывать этап в итоговых таблицах», есть настройки для playoff:
Playoff - если у этапа есть флажок playoff, и он равен yes, этот этап является частью стадии playoff чемпионата;
Team1_id - номер команды 1;
Team2_id - номер команды 2.
Playoff_stage – стадия плей-офф;
 
Эти 2 команды могут ходить друг к другу «в гости», проводить игры и по результатам игр подводятся итоги этого этапа. В конечном итоге, когда у этапа установлен флажок playoff, то у этого этапа можно определить только 2 участника этой серии следующим образом, либо это конкретная команда (выбирается из списка), либо выбирается команда, занявшая определенное место в предыдущей стадии (playoff). Это места либо 1, либо 2. 1 – это победитель серии; 2 – это проигравший в серии.
 
Таким образом, мы получаем взаимосвязь, когда мы видим, как продвигается команда по турнирной сетке в стадии playoff. В отличие от этапов регулярного чемпионата вывод из серии playoff заключается только лишь в одну линию. Людей интересует лишь одна вещь – кто, с каким счетом ведет, в какой серии. В стадии playoff нет понятия - сколько очков набрала команда. На стадии playoff отсчет очков отличается от отсчета очков на стадии проведении регулярного чемпионата. Яркий пример – это баскетбол. В регулярном турнире обычно за победу выдается 2 очка, за поражение – 1, и 0 – если команда получает техническое поражение, например, команда не является на игру. На стадии playoff очки подсчитываются - выиграл – 1 очко, проиграл - 0. Очки, набранные командой на этапах серии playoff не должны зачитываться в очки чемпионата, которые обычно подсчитываются, когда проходил регулярный чемпионат.
 
Например, команды играли турнир, набирали очки, дальше идет этап на выбывание. Выиграл – идешь дальше, проиграл – выбываешь. Когда идут подсчеты очков результатов по турниру при вводе каждого счета каждой игры, производится счет очков по всему турниру. В итоге получаем, что на стадии playoff очки серии подсчитываются только для самих серий. Не имеет смысла общий подсчет очков, набранных командой на стадии playoff. В системе существует интерфейс, который позволяет закрывать стадию playoff. Это интерфейс, заходя в который администратор сайта говорит, что данный этап закрывается, т.е. его больше не нужно показывать в турнирной сетке и по результатам этого этапа мы ищем те последующие этапы, которые следуют за этим этапом.
 
Например, счет в серии - 3:2. Победитель в серии - команда 1, а проигравший в серии - команда 2. Проигравший может проходить дальше в борьбе за утешительный приз, а может не найтись никакого места. Если команда проиграла, значит выбыла. На этом участие ее в этом турнире закончено. Чтобы построить такую сложную сетку в стадии playoff разработан специальный интерфейс начальной стадии playoff для каждого турнира - вручную строим (человек должен либо на листочке, либо у себя в голове построить) турнирную сетку. Например, максимально в playoff участвует 128 команд. Все числа команд участвующих на входе и на выходе – это числа являющиеся степенью числа 2.
 
Например, начинают стадию playoff 8 команд. Сам этап playoff будет проводиться в 3 стадии – ¼, полуфинал и финал. В интерфейсе предлагается, кроме количества команд на входе и количество команд на выходе предлагается выбрать (интерфейс сам подсказывает сколько будет стадий playoff) и для каждой стадии задаются примерные даты начала каждой стадии. Даты носят условный характер, потому что сама сетка может быть не привязана ко времени. Например, определили ближайшие серии разыгрывания игр, составляются следующие стадии, следующие серии. Заводятся 3 примерные даты.
 
Известно, что на первом этапе, будь то 1/16, либо 1/8, либо ¼ финала, мы знаем участников команд и можем разбить их на пары. Получается, что на 1 этапе можем установить, что участниками серий являются конкретные команды, а последующие стадии playoff определяются так - какое место (победитель/проигравших) играет с каким местом предыдущей стадии (пары).
 
После того, как мы указываем число команд на входе, число команд на выходе, несколько дат стадии playoff, мы в результате переходим ко второму шагу, в котором мы знаем число пар, исходя из числа участников на входе деленное на 2. Для каждой пары мы задаем серию. Серия задается датой начала игр, командами участников (команда 1, команда 2). Внутри каждая пара нумеруется – это нужно для облегчения навигации внутри этапа. Последующие этапы расставляются автоматически, если количество команда на каждом последующем этапе являются числом, деленным на 2 числа команд, которые участвовали в предыдущем этапе.
Это бывает не всегда. Например, разыгрывается 4 места (в баскетболе есть понятие финал четырех). Эти 4 места должны разыгрываться на последней стадии, на которой, казалось бы, должны участвовать только две команды в финале. Но для построения формируются 2 серии последней стадии – борьба за 1-2 места, борьба за 3-4 места. Администратору сайта нужно внимательно смотреть каждый последующий этап, что предложил компьютер в качестве участников, и самом распределить пары участников по сериям и места (победитель/проигравший).
 
Если на стадии полуфинала играют 2 пары, у каждой пары (пары 1 и пары 2) выходит по одному победителю и одному проигравшему. На этапе финала оператор обязан, когда разыгрываются 4 значащих места, на последнем этапе будет борьба за 1-2 место между победителями пары 1 и пары 2 полуфинала, а проигравшие пары 1 и пары 2 будут бороться за 3-4 место. Очень важно администратору сайта на 2 шаге открытия стадии playoff не ошибиться и расставить правильно сетку турнира. Ему в дальнейшем будет проще, когда он будет закрывать серию playoff, отобразятся автоматически команды, проходящие в следующий этап.
 

 

Пример работы модуля http://www.basket3000.ru/competitions/liga_razvitiya/results/index.htm.

Коленько Сергей