Компьютерные программы по шашкам

Рефераты, курсовые, дипломные, контрольные (предпросмотр)

Тип: Курсовая работа. Файл: Word (.doc) в архиве zip. Категория: Информатика, IT
Адрес этого реферата http://referat-kursovaya.repetitor.info/?essayId=24918 или
Загрузить
В режиме предпросмотра не отображаются таблицы, графики и иллюстрации. Для получения полной версии нажмите кнопку «Загрузить». Рефераты, контрольные, дипломные, курсовые работы предоставляются в ознакомительных целях, не для плагиата.
Страница 1 из 2 [Всего 2 записей]1 2 »

Введение

Компьютерные программы по шашкам

А как сильно играют программы по шашкам? Вроде бы уже Гарри Каспаров проиграл компьютеру в шахматы, почему же в шашках все "тихо"?

Что касается Каспарова, то он играл не в полную силу, пунктов на 200 ниже своего рейтинга, а в последней партии просто стал непонятно почему экспериментировать. На самом деле если бы Гарри мог сыграть с Deep Blue 15-20 тренировочных партий, то он "вычесал" бы ее на ноль.

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

Кроме того, компьютерные шахматы имеют очень мощную поддержку, так как пользуются хорошим спросом на игровом рынке, что стимулирует их развитие. Кроме того, создаются специальные исследовательские группы типа Deep Blue, которые только и занимаются программированием шахмат. Если бы нашлись источники финансирования для группы из 3-4 человек, то за один-два года реально создать шашечную программу (в русские шашки), играющую на уровне чемпиона мира. Наглядный пример - канадская программа Chinook. Занимались ей профессионалы несколько лет - теперь она выигрывает у чемпиона мира.

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

Что касается силы игры, то судить трудно, потому что зарубежные программы не включаются в турниры среди людей. В товарищеских встречах в блице на хороших Pentium-ах они способны победить, наверное, любого. При контроле по 1-3 минуты на ход сила игры - примерно на мастерском уровне, может быть, немного слабее. Причина некоего застоя в компьютерных шашках одна - нет хороших стимулов, отсутствует конкуренция. В Нидерландах ежегодно проводится турнир программ, но победитель ничего, кроме морального удовлетворения, не получает. Наглядный пример - DAM 2.xxx. Постоянные третьи-четвертые места в турнирах - и бесплатное распространение.

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

Российская Федерация Шашек официально признает только две разновидности игры - русские и международные шашки.

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

Список дебютов и позиций, применяемых в таких турнирах, постоянно пересматривается и утверждается РФШ раз в два года.

Описание задачи.

Русские шашки.

Доска 8х8 клеток,

шашки занимают первые три ряда с каждой стороны,

простая может бить назад,

дамка может ходить на любое число полей,

при бое простой через поле превращения она превращается в дамку и продолжает бой по правилам дамки.

Бить можно произвольное количество шашек в любых направлениях.

Цель игры - съесть или запереть все шашки противника.

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

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

Выбор метода решения

Данную задачу удобно решить методами объектно - ориентированного программирования на языке Турбо - Паскаль. Язык Турбо - Паскаль является универсальным, имеет широкие возможности в области использования графики, а концепция ООП, поддерживаемая им позволит максимально приблизить решение задачи к образу человеческого решения, упростив тем самым задачу.

Описание алгоритма решения.

Суть процедуры, генерирующей ход компьютера в зависимости от позиции на доске состоит в следующем:

1. Проверить для каждой шашки комп., может ли она что-то побить. Если да - то на п.6 , если нет - то на п.2

2. Ходить шашкой с максимальным удалением от начальной линии так, чтобы она не попала под бой (такие ходы не всегда есть)

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

4. Внести соответсвующие изменения в массив расположения шашек и вывести его на экран.

5. Конец хода. Передать ход человеку.

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

7. Проверить, можно ли еще что-то побить той шашкой, которой мы только что били. Если можно - на п.6., если нельзя - на п.4.

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

Существует несколько путей улучшения приведенного алгоритма, но доработка потребовала бы увеличения текста программы приблизительно на 50%, а улучшение игры было бы не очень заметно. Поэтому остановимся на приведенном алгоритме, так как он является одним из лучших с точки зрения соотношения затрат времени на написание программы и качеством игры.

Описание структуры данных.

Информация о расположении шашек хранится в массиве данных перечисляемого типа - W,WD,B,BD,N,G, где

W - белая шашка

WD - белая дамка

B - черная шашка

BD - черная дамка

N - свободное поле

G - поле, не принадлежащее доске. Поля этого типа окаймляют доску и нужны для того, чтобы индексы массива шашек всегда находились в допустимых пределах (мы расширяем размерность массива за счет этих полей, так как процедуры и функции программы могут обращаться к этому массиву с индексами, не принадлежащими [1..8,1..8] ).

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

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

Описание процедур и функций.

procedure Tdesk.ScanDamk

RSSСтраница 1 из 2 [Всего 2 записей]1 2 »


При любом использовании материалов сайта обязательна гиперссылка на сайт «Репетитор».
Разработка и Дизайн компании Awelan
www.megastock.ru
Проверить аттестат