История этого проекта началась в феврале 2001 года, когда перед нашей группой была поставлена задача разработки игровой программы, моделирующей одну из наиболее известных игр и в то же время выделяющейся на фоне других программ подобного рода. После полуторамесячных размышлений нами было принято решение создания шахматной программы как допускающей наиболее динамичное развитие в будущем и открывающей простор для создания сложных, но в то же время оригинальных алгоритмов.
Весь процесс создания программы проходил в три этапа. В самом начале была создана простая программа, работающая под DOS и не использующая графического интерфейса, а также не наделенная возможностью установки режима игры "Человек-компьютер".
На втором этапе был реализован графический интерфейс в DOS-среде (большую помощь в этом нам оказали разработчики Адов О.В. и Дудоров Е.П - спасибо им за это!) и реализован алгоритм генерации компьютерных ходов, позволивший привести программу к практически законченному виду. Эта часть работы была завершена в июле 2001 года.
После длительного перерыва, вызванного острой нехваткой времени, в августе 2002 года был начат последний этап работы над программой - перевод ее на платформу Windows, устранение массы обнаруженных в ходе эксплуатации DOS-версии ошибок и реализация новых возможностей, осуществимых только в Windows-среде. На этом этапе Михеевым А.А. было произведено многоуровневое тестирование, в результате чего обнаружено и устранено 137 только сравнительно серьезных ошибок; в частности, был исправлен алгоритм генерации компьютерного хода.
В феврале 2003 года, после того, как программа приобрела достойный вид, она была выложена на данный сайт.
В настоящее время рынок программ для игры в шахматы весьма велик и число программ, предлагаемых пользователю, растет с каждым годом. Как правило, все программы, с которыми может встретиться любитель игры, делятся на две группы; к первой из них относятся примитивные программы без интерфейса и без интеллектуального алгоритма игры с компьютером (так называемые любительские). Вторая группа - исключительно сложные в освоении и использовании программы с огромным числом настроек, предназначенные для узкого круга профессионалов. В нашей работе мы попытались преодолеть этот разрыв путем создания программы с дружественным (ориентированным на пользователя) интерфейсом и интуитивно понятным алгоритмом игры. Особенностью данной программы, заметно выделяющей ее на фоне прочих этого же рода, является уникальная интерактивная система обучения, посредством использования которой любой начинающий игрок сможет за считанные часы овладеть древним искусством игры в шахматы.
Простая схема генерации ходов компьютера позволяет вести игру практически без затрат времени. Недостатком этой схемы следует признать малую эффективность генерируемых ходов и отсутствие возможности подключения дебютных библиотек. Мы надеемся, что с дальнейшим развитием программы эти недостатки будут преодолены.
Данная программа, несомненно, будет полезна всем - как неопытным пользователям, только начинающим играть в шахматы, так и профессионалам, стремящимся углубить и расширить свои знания, используя генерируемые компьютерным алгоритмом ходы и их совокупности.
Программа "Шахматы для профессионалов" разрабатывалась под внутренним названием "ChessPro". Программа написана на языке программирования C++ в интегрированной оболочке Microsoft Visual Studio 6.0 и нуждается для функционирования в операционной системе Windows 98. Более старая версия операционной системы программе не подойдет, в частности, из-за файла помощи в формате Windows 98.
Программа предназначена для:
В данной программе нами разработаны уникальные алгоритмы определения возможных ходов фигур, основанные на использовании функциональных зависимостей. Некоторые из этих алгоритмов приведены ниже.
Начата работа по изменению схемы сохранения позиции в файле (концепция сохранения позиции игры заменена на концепцию сохранения контекста игры, включающего в себя позицию, а также файлы человеческой и компьютерной нотации). Реализовано сохранение позиции и ее восстановление (не в полном объеме). При открытии контекста позиции производится проверка существования файлов нотаций и, если хотя бы один из них не существует, счетчик ходов и флаг выбранного поля обнуляются.
Изменена схема именования файлов контекста игры; в отличие от ранее использовавшейся схемы, в которой каждому файлу соответствовало свое имя и общее расширение, в новой все файлы имеют одинаковое имя, введенное пользователем в диалоге сохранения файла.
Создано новое диалоговое окно CSelectOptions для настройки параметров интерфейса игры; в это окно помещена панель CTabCtrl с закладками. Прежнее диалоговое окно настройки интерфейса CSelectFeatures помещено на указанную панель в качестве одной из закладок; для этого изменены его свойства (убрана граница, а само окно сделано дочерним).
Изменен функция обеспечения доступа к файлу (убрана строка вывода в стандартный поток ошибок).
Индексы иконок, выводимых в окно информации о программе, заменены на индексы, соответствующие новому набору иконок.
Функции сохранения и востановления позиции внесены в класс CChessProDlg.
Реализована функция выделения из полного пути к файлу непосредственно имени (без расширения). Выходная строка этой функции сравнивается с использовавшимся ранее именем файлов контекста игры.
----------------------------- CHES0773 (7.73) ------------ 10.11.02 ---------Удален запрос на сохранение позиции перед переходом в обучающий режим. Теперь позиция при переходе в этот режим сохраняется, а при выходе из него - восстанавливается автоматически.
Добавлено занесение массива ходов выбранной фигуры в файл позиции при сохранении (для реализации подсветки этих полей в случае, если пользователь сохранил позицию при выбранном начальном поле).
Удалены действия по созданию файлов нотаций в случае их отсутствия (эти файлы будут созданы при первом же ходе пользователя).
Добавлено удаление всех ходов из списка нотации при загрузке сохраненной игры.
Начата реализация вывода всех ходов из загруженного файла человеческой нотации в экранный список.
----------------------------- CHES0774 (7.74) ------------ 11.11.02 ---------Вместо обнуления счетчика ходов при загрузке контекста игры без файлов нотаций реализован вывод диалогового окна, извещающего о невозможности загрузки игры, с последующим возвратом в текущую позицию.
Концепция сохранения контекста игры в файле изменена в очередной раз. Теперь после сохранения позиции полный путь сохраняется в отдельной переменной, а файлы нотаций ведутся под старыми именами. При сохранении позиции к полному пути прибавляются имена с соответствующими расширениями. Ввиду быстрого осознавания ненадежности этого алгоритма решено полностью изменить схему ведения нотации...
........................................................................
----------------------------- CHES0775 (7.75) ------------ 12.11.02 ---------Реализована совершенно иная, нежели в предыдущих версиях, схема сохранения контекста игры. Теперь файлы нотаций в ходе игры не ведутся вообще, а создаются при сохранении контекста совместно с файлом позиции *.chp. При этом полный путь к файлам контекста сохраняется в специальной строковой переменной и при повторном сохранении игры (или загрузке новой) именно он отображается в диалоговом окне открытия-сохранения.
В связи с введением новой схемы в программу внесены следующие изменения...
........................................................................
Михеевым А.предоставлен 5-й отчет о тестировании версии 7.70, содержащий 5
найденных ошибок из 30, обнаружение которых планировалось к 13.11.02. Содержание
5-го отчета Михеева А. (дословно):
"Глюк №52:
Белая пешка стоит под ударом черн.ферзя,прикрывая короля
Щелкаю на нее - не выбирается.Щелкаю на коня g1-он мо-
жет походить на поле f4.
Глюк №53:
Сохранил позицию в файл test1.Затем закрылся.
Потом открыл из файла.Нажал посл.ход-она
зависла. Виснет в любом случае- щелкнуть
можно куда угодно.
Глюк №54: e2-e4 c7-c5
e4-e5 d7-d5
Почему-то не могу взять черную пешку d5 на проходе.
Глюк №55:
Сделал рокировку с ладьей,к-ая уже ходила.
Глюк №56:
Остались на доске только ферзи и короли.Выбрал короля на d1.
У него выделено поле для хода g1.Сходил туда.Появилась
ладья на f1.Затем выбрал снова белого короля-сходил на c1.
Появилась вторая ладья на d2.А если нажать посл.ход
ладья становится на свое место в начале партии.
Улучшения:
-пошире поле для записи ходов,а то не вмещаются."
........................................................................