Сёги форум
Сёги форум
Форум о японских шахматах сёги
Поддерживается shogi.by
Автор Сообщение
<  Минская программа для проведения турниров (в Excel)
Токин
СообщениеДобавлено: Чт Июн 01, 2017 9:55 am  Ответить с цитатой
Админ


Зарегистрирован: 14.10.2004
Сообщения: 3633
Откуда: Минск

Тема удобной программы для проведения турниров много раз поднималась и в личных беседах и на страницах форума (к примеру здесь и тут). 11 лет назад я создал турнирного помощника в MS Excel, который с тех пор успешно использую. Я особо не делился своей наработкой, так как делал ее под себя и искренне считал, что у нее не совсем дружественный интерфейс. Тем не менее вещь оказалась вполне осваиваемой и полезной для других – сегодня все минские турниры по сёги проводятся с ее помощью (знаю, что и минские вейчисты, а также московские, барселоновские сёгисты также ее применяют).

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

О программе
Программа – это xlsm-файл (файл Excel с макросами), который открывается на любом компьютере, где установлен MS Office. Установка каких-то дополнительных приложений не требуется.

Скачать Tournament_v10.1

Любая копия этого файла представляет отдельный турнир. Т.е. у вас в некой турнирной папке на компьютере будет находиться примерно следующее:


где каждый файл – отдельный турнир со всей необходимой функциональностью.

Самый простой способ начать работать с новым соревнованием это открыть в Excel базовый файл (или любой производный от базового) и сохранить его с новым именем (именем турнира).

Важный момент: в работе приложения участвуют макросы. При открытии турнирного файла в первый раз, Excel обычно информирует о наличии макросов и спрашивает разрешения их включить.


Макросы нужно включить. Если же подобное сообщение не возникло и какие-то функции не работают, макросы можно включить в Excel самостоятельно: Сервис → Макросы → Безопасность макросов → Параметры макросов. В более современных версиях MS Excel возможно будет другой путь.

Краткое описание приложения
На заре своего “сёги-организаторства”, когда число игроков в Минске было совсем невелико, для ведения турнирной таблицы мы вполне обходились листком бумаги и ручкой. Позже я пытался найти подходящую программу, но после анализа существовавших на тот момент решений (о их недостатках писал здесь) решил создать что-то свое, удовлетворяющее одному простому требованию: все входные данные турнира должны храниться в одной таблице, которую я должен иметь возможность легко редактировать (т.е. турнирная таблица должна быть именно таблицей, а не набором различных менеджеров (для игроков, для клубов, для туров и пр.) с кучей настроек).

Изначально для решения поставленной задачи в турнирном файле я создал два листа: с входными данными (Input лист) и выходными данными (Output лист). Ниже для наглядности буду размещать скриншоты с последнего минского турнира (картинки можно увеличить при клике).

Итак, лист Input лист это и есть та самая таблица, которая хранит все турнирные данные и которую мы можем легко редактировать, внося нужные правки.


По картинке (по клику можно увеличить), я думаю вопросов нет. Все вполне традиционно и понятно. Добавлю лишь несколько комментариев.

Если вы храните предварительный список игроков в Excel, в таблицах Google Docs или любом другом табличном виде, вы сможете быстро начать турнир, скопировав эти данные в Input лист.

Обязательными входными данными являются колонки с порядковым номером, с именами игроков и рейтингом (если игрок новичок указываем там 0). Остальные колонки вспомогательные. За 11 лет использования, программа совершенствовалась и кое-что добавлялось, вроде колонки Игры (общее количество сыгранных игроком партий), которая нужна лишь для более точного расчета изменения рейтингов FESA по итогам турнира (также добавленная в процессе эволюции функция). Т.е., например, колонки Игры и Возраст можно смело не заполнять.

Колонка ММ – это стартовые очки Мак-Магона. Если вы проводите турнир по системе Мак-Магона, то эта колонка обязательна для заполнения.

Результаты по турам заносятся в следующем формате: номер соперника и “+” – если победа, “-” – если поражение, “=” – если ничья. В первых версиях, необходимо было еще указывать цвет, но я отказался от этого, упростив ввод данных, так как этот функционал практически не использовался (в абсолютном большинстве любительских турниров по сёги цвет определяется фуригомой). При указании номеров соперников важно не путать порядковый номер игрока и номер строки в таблице (колонки расположены рядом). Также важно следующее правило записи: если игрок пропускает тур, то в качестве номера соперника указывается его собственный порядковый номер, а не 0 или пропуск.

Максимально возможное число туров 11, чего, исходя из опыта, более чем достаточно (для большего числа туров необходимы изменения в коде). Если в вашем турнире число туров меньше 11, то не нужно ничего удалять, просто оставьте столбцы незаполненными.

Переходим к листу Output (по клику можно увеличить).


Здесь, опираясь на данные из листа Input, рассчитываются очки и коэффициенты. На основе этих расчетов строки могут быть отсортированы в нужном порядке, в том числе итоговом. Чтобы это делать быстро, без лишних телодвижений, справа есть кнопки в помощь. Коэффициенты – это SOS (к-т Бухгольца), SDOS (к-т Бергера), SOSOS (сумма к-тов Бухгольца). Приоритет к-тов в итоговой расстановке возможен только в том порядке, что я записал выше (другие к-ты или другой приоритет потребуют изменения в коде).

Output лист содержит формулы и не предназначен для ввода данных (для этих целей предназначен лист Input), чтобы случайно лист “не сломать” он защищен от редактирования. В то же время его можно свободно форматировать на свой вкус. К примеру на картинке выше (по клику картинку можно увеличить) очевидно слишком много лишней информации: у нас всего 4 тура (т.е. не нужны колонки с лишними турами), для городского турнира возможно не нужна колонка Город, также если бы у игроков не было стартовых очков Мак-Магона (т.е. это была бы обычная швейцарка) то нам не нужна была бы и колонка ММS. Все “избыточные” колонки мы можем спрятать (только не в коем случае не удалять!), выделив нужные колонки таблицы и выбрав пункт Скрыть в меню при нажатии правой клавиши мыши:


В общем, используя только эти два листа уже можно существенно облегчить труд технического судьи турнира, но для комфортной работы этого мало. Точечные корректировки в таблице делать удобно, но при массовом вводе данных вроде проведения жеребьевки или внесении результатов тура нужен дополнительный инструмент, кроме того судья должен объявлять пары играющих, что делать при помощи Рабочего листа неудобно. Для всего этого существует лист Current Round (Текущий тур).


Лист облегчает работу с текущим туром в Input листе, где текущий тур – это крайний (справа) заполненный там столбец. Как он работает проще объяснить на примере стандартной последовательности действий при проведении турнира.

Как это работает?
Теперь давайте пошагово разберем как работать с программой. Допустим, стартует турнир.

1) Делаем копию базового файла, сохранив его с новым именем (например, именем турнира или датой).

2) Открываем турнирный файл, переходим на лист Input и заполняем входные данные. Как я уже писал выше при описании листа Input, некоторые колонки можно не заполнять. Если турнир по системе Мак-Магона, вписываем стартовые очки в соответствующую колонку ММ.

3) !Перед началом жеребьевки текущего тура, на листе Input (для текущего тура) нужно отметить пропускающих тур игроков. Напомню, если игрок пропускает тур, то в качестве номера соперника указывается его собственный порядковый номер (а не 0 или пропуск), а также результат, обычно -. К примеру, игрок под номером 5 покинул турнир после 2 тура, значит перед каждым следующим туром, не забываем перед началом автоматической жеребьевки записывать для этого игрока 5- (это несколько неудобно - в следующих версиях добавлю более комфортный способ). Также перед началом жеребьевки можно вручную принудительно свести желательные пары.

Если в турнир добавляется новый игрок, к примеру под номером 13. То необходимо просто в следующей свободной строке на листе Input внести по нему данные, также не забыть заполнить,пропущенные игроком туры (обычно считается, что он в них получил поражение) - для нашего примера в строке игрока в пропущенных турах указываем 13-.

Еще раз отмечаю, все это делается в листе Input перед началом автоматической жеребьевки!

4) После этих предварительных действий переходим на лист Current Round и нажимаем кнопку Провести жеребьевку. На листе появляются играющие, также автоматически заполняется текущий тур в листе Input. Важно понимать, что лист Current Round - вспомогательный. Главный лист - это Input, если вы хотите внести какие-то изменения, то делаем их в листе Input (а не Current Round), затем, чтобы после изменений лист Current Round соответствовал данным в листе Input нужно нажать кнопку Показать пары.

5) Если требуется изменить жеребьевку текущего тура, то нужно перейти на лист Input и удалить данные в колонке текущего тура. Для удобства можно также очистить данные с листа Current Round - кнопка Очистить лист (это кнопка просто очищает лист Current Round, данные на листе Input не модифицируются). Далее действия 3) и 4).

6) По прошествие тура, на листе Current Round заполняем результаты в колонке Результат. Следует указать итог игры для первого в паре игрока (+, - или =). После заполнения, чтобы перенести данные с листа Current Round на лист Input, нажимает кнопку Внести результаты.

7) Все неправильные результаты можно и нужно исправлять в листе Input.

Вспомогательные листы

Прокомментирую и некоторые вспомогательные листы. Лист FESA Output я добавил, для отображения итоговой таблицы в формате, необходимом для отправки в FESA. Имена игроков в листе Input и в листе FESA Output могут отличаться, к примеру в Input мы заносим игроков используя кириллицу, а в FESA Output они должны быть в том написании, в котором они хранятся в базе FESA (на момент написания этих строк, база FESA не использует id для игроков). Для соответствия написания игроков используется лист-карта Players Map. Если вы видите в листе FESA Output ошибку, то это означает что нужного соответствия в листе Players Map не обнаружено (к примеру, игрок - новичок) и вам нужно это соответствие туда добавить (по аналогии). Я обычно также добавляю это соответствие не только в турнирный, но и заодно и в базовый файл, чтобы больше не вводить.

Печатный лист Print используется техническим судьей для печати результатов и жеребьевки. Отмечу, что в базовом турнире он в “сыром” виде, т.е. его необходимо для каждого конретного турнира подгонять в удобный формат. В таблице нужно будет спрятать ненужные колонки. Также нужно будет “расплодить” в удобном месте играющие пары (они там не все отображены), если у вас нет навыков работы с Excel, то можно банально скопировать последнюю пару ниже по листу. Я же обычно в целях экономии листов при печати, копирую в 2 колонки.

Вот как-то такSmile Если появятся вопросы, задавайте. Скачать базовый файл можно отсюда.
_________________
С уважением,
Андрей Лысенко
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
AlexK
СообщениеДобавлено: Вс Июл 02, 2017 9:39 am  Ответить с цитатой
Завсегдатай


Зарегистрирован: 15.04.2015
Сообщения: 843
Откуда: Москва

Андрей, программа реально замечательная и я сам ей пользуюсь. У меня тут появилась одна идея по поводу дальнейшей модернизации.
Могу сам попробовать, хотя уверен, что вам, как программисту, это очень легко. Идея состоит в том, чтобы сделать парсер, который на ещё один лист книги будет загонять весь список игроков с сайта FESA cо всеми их рейтингами и кю. Ну и соответственно потому оттуда кого надо опять же автоматически загонять в таблицу нового турнира. Это единственный момент в программе (что приходится вносить участников вручную) который меня напрягает. Ну это от того, что я часто провожу шахматные турниры и уже развращён донельзя программой Swiss Manager, где участники из специальных баз загоняются в турнирную таблицу в один клик со всеми потрохами.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Токин
СообщениеДобавлено: Пн Июл 03, 2017 6:27 am  Ответить с цитатой
Админ


Зарегистрирован: 14.10.2004
Сообщения: 3633
Откуда: Минск

Спасибо, Александр. На самом деле то, о чем вы говорите, частично реализовано для минского клуба. Есть одна серьезная проблема: сайт ФЕСА, мягко говоря, нерегулярно обновляет список игроков, поэтому он не может быть надежным источником, особенно если по несколько турниров в неделю. Я веду собственную базу минских игроков, но это не может быть общим решением, так как я получаю обсчеты только минских турниров.

Но, я думаю, можно написать какую-то отдельную утилиту (не Excel) для работы с данными с сайта ФЕСА. Подумаю...
_________________
С уважением,
Андрей Лысенко
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Часовой пояс: GMT + 3

Следующая тема
Предыдущая тема
Страница 1 из 1
Сёги форум  >  Компьютерные программы

Начать новую тему   Ответить на тему


 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме




Powered by рhрВВ
Based on NoseBleed theme


Рейтинг@Mail.ru Каталог TUT.BY