ПРОГРАММЫ
07.09.04 Моя база данных
   В 2000 году в оболочке Access я создал базу данных, в которой попытался объединить все, что требуется шашисту и не только. Там было шесть видов шашек (три на 100 кл. доске и 3 на 64 кл.), очень удобная и быстрая запись партий, проведение турниров по круговой, швейцарской и московской системе (с введением дополнительных критериев в любом порядке, что важно при дележе мест), данные о шашистах и книгах, автоматическое создание таблиц и многое другое. Но, к сожалению, я ее так и не доделал. Во-первых, слишком громаден был замысел. Я утонул в этом море. Во-вторых, сейчас практически нет времени этим заниматься. В-третьих, делал я это для себя. Я не программист и состязаться с профессионалами не собираюсь.
   Но все это не значит, что программа не работает. Просто мне пока не удалось добиться полного взаимодействия многочисленных подпрограмм, и возникающие ошибки устраняю по мере их возникновения.
   Если кому-то интересно, то я расскажу о ее функциональных возможностях. К тому же у меня большой опыт работы с шахматными программами, которые далеко впереди шашечных (скорее всего, скоро придется говорить в прошедшем времени). Среди шашечных меня удивила TUNDRA - своей силой и базой окончаний. Здесь я снимаю шляпу!

О моей шашечной программе

   Запись партий в моей программе в отличие от многих очень гибкая. Например, я мог менее чем за одну минуту записать партию, просто в произвольном порядке “двигая шашки по доске” и за несколько секунд, нажимая на возможные ходы. Можно было просто вставить текст партии, набранный в текстовом редакторе, и программа проверяла правильность записи. И если в тексте была ошибка, то программа обрывала запись на неточности. Сейчас я улучшил эту функцию - при неправильной записи появляется выбор из правильных ходов. После нажатия на правильный ход, программа заменяет неправильную запись. Если запись партии была правильной, то все происходило в считанные секунды. Таким образом, было быстрее вносить партии в базу данных. На партию в среднем (с учетом неточностей в записях) уходило около минуты. В основном время уходило на введение других данных о партии. Кстати некоторые неточности в записи партии программа устраняла автоматически. Например, лишние пробелы. Сейчас меня мучают сомнения о правильности записи позиций. Пока не найду оптимальный вариант работа по созданию базы продолжена не будет. Точно я не помню, но, скорее всего, одна партия со всеми данными занимала около 2-3 килобайт. На мой взгляд - это много. Правда, при сжатии размер сокращался почти в 10 раз. То есть база в 1000 партий в сжатом виде занимала чуть более 300 килобайт.
   Передвижение шашек по доске тоже практически универсальное. Единственные ходы программа делала автоматически (можно было одним нажатием кнопки отключить этот режим). Шашка передвигалась после нажатия начального поля и конечного (что есть почти во всех программах). Но для совершения хода достаточно было нажать только начальное или только конечное поле, если с этого поля или на это поле был единственный ход. Кроме того, можно было нажать на клавишу мыши и, не отпуская ее передвигать до нужного поля. Если такой ход возможен, то шашка передвигалась после отпускания клавиши. Переход по тексту партии возможен с помощью соответствующих кнопок: первый ход, предыдущий ход, следующий ход, последний ход. При переходе по тексту партии текущий ход выделяется.
   Запись производилась в трех нотациях: в краткой, в полной и в цифровой (принятой в шахматных международных турнирах по переписке). Одну нотацию можно было сменить другой после нажатия нужной команды. Этот текст можно было копировать и вносить в любой текстовый редактор в любой нотации.
   Отбор партий производился по многим критериям: по позиции, по шаблону, по авторам, по результатам, по городам, по званиям, по рейтингам, по турнирам и возможно еще по чему-то (все не упомнишь).
   При вводе шашиста достаточно было выбрать его фамилию из списка и все остальные данные о нем, введенные раннее, появлялись автоматически. Такая же функция действовала и в отношении турнира. Форму вывода данных участника и места его жительства можно было видоизменять одним нажатием кнопки. Например, Фамилия, имя, отчество участника полностью или инициалы и фамилия. Всего десять вариантов. Потом можно было все это отредактировать, если возникала такая необходимость. Кстати в моей базе данных количество введенных шашистов доходит до четырех тысяч. Ввиду того, что некоторые шашисты имеют одинаковую фамилию и инициалы, важно было их не перепутать. Поэтому все они были под своими номерами. И отбор партий проходил не по фамилии, а по их номерам. Все остальные данные при записи партии также можно было вводить путем выбора из списка, если они были введены ранее.
   Собственная игровая программа играла, правда, слабо. Сейчас я значительно (по сравнению с тем, что было) улучшил игровую силу. Теперь она играет где-то в силу кандидата в мастера, а может даже слабее.

Программа по проведению соревнований

   Все те облегчающие функции при вводе данных действуют и в этой программе. Легче всего было создать алгоритм проведения соревнований по круговой системе. Здесь даже нечего рассказывать. Достаточно было взглянуть в кодекс.
   Сложнее было с алгоритмом по проведению соревнований по швейцарской системе. Обрисую кратко, чем я руководствовался при создании этой программы. Причем, это никакое-то спонтанное решение. Я прочел много литературы по этой теме и пришел к выводу: противоречий по данной тематике столь много, что создать универсальную программу практически невозможно. Чтобы угодить всем, нужно было создавать несколько программ. Тогда я решил создать программу, основанную на логике. Ход мыслей был такой. Что такое швейцарская система и для чего она нужна? Эта система проведения соревнования для отбора необходимого количества участников из большого количества. Эта система не годится для выявления сильнейшего и, особенно в соревнованиях с примерно равным составом. Главная проблема этой системы - сведения пар участников, начиная со второго тура. Основной принцип сведения пар - это положение участников в турнирной таблице. Положение участников в таблице зависит от набранных очков. Обычно в зависимости от набранных очков участники разбивались на очковые группы. В этих очковых группах пары сводились по жребию. То есть в темную, путем определенных манипуляций. Когда появились рейтинги, вторым критерием сведения пар стал рейтинг. Причем, здесь использовались тоже разные принципы. Не буду по этому поводу много говорить. Скажу только, что применялись в основном три метода сведения пар. Соответствовало ли это логике. Конечно, нет. Я бы согласился на один из этих методов, если не было одно большое "НО". Этот метод входит в противоречие с силой участника в данном конкретном турнире. Рейтинг участника подсчитывается только после окончания турнира и обычно меняется в лучшем случае после истечения трех месяцев. Да и рейтинг участников складывается не из одних тех же турниров. Отсюда вытекает следующее: рейтинг не может определять место участника в таблице, а, следовательно, не может быть критерием сведения пар участников. Какие же критерии могут отвечать справедливому определению силы игрока в данном турнире. Первый критерий - это набранные очки. Скорее всего, этот критерий не оспаривается никем. Второй критерий - эта система коэффициентов, основанная на набранных очках в данном турнире. В каждом соревновании при равенстве очков места распределяются по дополнительным критериям. Обычно их три. А какая система коэффициентов является основной при проведении турниров по швейцарке. Правильно. На первом месте, как правило, стоит система Бухгольца. Если у нас есть такая возможность определения места участника в турнирной таблице после каждого тура, то, следовательно, отпадает необходимость делить участников на группы с одинаковым количеством очков. Теперь у нас в каждой "группе" будет по одному (за редким исключением) участнику. Конечное звено в цепочке логики - просто первое место играет со вторым, третье с четвертым и т.д. Если эти участники встречались ранее, то пару составлял следующий участник и т.д. Сведение пар начинается с сильнейшего участника.
   В моей программе я предусмотрел три критерия распределения мест, которые в свою очередь можно выбрать примерно из десяти возможных. Почему такой богатый выбор?. Очень просто. Организаторы соревнований тоже соревнуются. Только это соревнование я бы назвал соревнованием в совершении самой большой глупости. Хотя каждому нормальному человеку ясно, что при такой системе соревнования лучше Бухгольца ничего не придумано. Основные критерии такие: "Бергер", "Бухгольц", "Шмульян", число побед, личная встреча, средний рейтинг соперников. Другие не буду называть, так как некоторые вытекают из выше перечисленных, а некоторые просто глупы и не имеют право на существование. Кроме этих критериев - есть еще один, который занимает особое место. Этот критерий был придуман мной. Это в какой-то мере Бергер и Бухгольц в "одном флаконе". Он применим в любых турнирах. Я уже опробовал его в проведенных турнирах и он полностью оправдал мои ожидания. Там где у участников Бергер был равным моя система разводила участников по местам. По-видимому, этого критерия достаточно для проведения любого соревнования. Пока я еще не встречал равного коэффициента у двух участников.
   Но все-таки эти алгоритмы были не самыми трудными в этой программе. Главное было создать возможность удобной работы с программой. Чтобы это сделать проходилось многократно переделывать все практически заново. До сих пор я не уверен, что достиг идеала., но более удобной программы мне не приходилось видеть. После ввода данных о турнире и участниках в дальнейшем нужно было вводить только результаты. Выигрыш - 2, ничья - 1, проигрыш - 0, поражение обоим участникам - "-". После ввода этих чисел в ячейке "результат" появлялись результаты партии. Причем в любом соотношении. Например: 2-0, 1-1, 0-2, 0-0; 1-0, Ѕ-Ѕ, 0-1. Для формы вывода результата - необходимо сначала ввести очки за выигрыш, за ничью и за поражение.
   Таблица и результаты тура выводятся автоматически после нажатия на нужную команду. Таблица выводится трех видов: по местам, по номерам участников, краткая таблица. Безусловно, была возможность вывода этих таблиц после любого тура. Например, после окончания турнира можно было посмотреть положение участников после любого тура. Эти таблицы можно было скопировать и отредактировать в текстовом редакторе. Правда, не удалось пока создать универсальный способ распечатки таблиц. При большом количестве участников в турнире возникают проблемы. Работа над возможностью создания таблиц отняло у меня больше всего сил и времени.
   Конечно, чтобы рассказать обо всех возможностях программы данной статьи недостаточно. Пока ограничусь этим текстом. Если что-то упустил, то потом добавлю.

Вот одна из форм программы для работы с базой  партий.

Автор: Александр Горин Звание: Мастер спорта
Страна: Россия Язык: Русский
Создана: 07.09.04 Обновлена: 07.09.04
Тема: Шашечные новости Посетитель:
Используются технологии uCoz