Создание модели игры «Шашки» в среде программирования Delphi
Содержание
Введение…………………………………………………………
Аналитический обзор
I. Шашки.
- История шашечной игры……………………………………………………..8
- Классификация……………………………………………
………………....10 - Варианты шашек……………………………………………………...….
.....10 - Шашки как вид спорта........................
.............................. .............................. 15
II. Среда программирования Delphi.
2.1 Краткое определение Delphi…………………………………………...……16
2.2 Целевая платформа…………………………………
2.3 История языка……………………………………………
2.4 Синтаксис языка………………………………………
2.5 Объектно-ориентированные особенности языка…………………………..21
2.6 Примеры……………………………………………………………
2.7 Расширения файлов………………………………………………………….
Глава III Практическая часть.
Работа в среде Delphi, написание программы «Шашки»
3.1 Проект, его местоположение………………………………
3.2 Запуск программы с компакт диска………..……………………………….25
3.3 Исходный код программы……………………
Заключение……………………………………………………
Список литературы…………………………………
Введение.
Тема дипломного проекта: «Создание модели игры «Шашки» в среде программирования Delphi. Программа не должна вести игру с человеком, её задача – проверять правильность совершаемых ходов и возникновение выигрышных ситуаций для одного из игроков»
Задачи дипломного проекта: программирование в соответствии с требованиями задания, а именно на языке Delphi.
Цель дипломной работы: моделирование аналогов популярной игры шашки.
Одним из разделов компьютерного моделирования, являются компьютерные игры, зависящие от случайности и стратегических правил игры.
Актуальность темы на сегодняшний день: тема как никогда актуальна, за счет достаточно высокой конкуренции на рынке подобных приложений и программ. Многие подобные разработки, нацелены на игру «компьютер – человек», и искусственный интеллект в редких случаях, обыгрывает даже чемпионов.
Таким образом, некоторые
разработчики, пытаются создать совершенный
ИИ (искусственный интеллект), способный
побеждать действующих
Актуальность работы над шашками, нацеленными на игру «человек – человек», так же подтверждается за счет довольно большого перечня похожих приложения на рынке. Кроме того, любому человеку полезно сыграть «самому с собой», это позволяет развивать мышление, учит просчитывать ходы, и тренирует память (запоминая ходы, свои прошлые ошибки и т.д.).
Так выглядит главное окно, запущенной программы «Шашки».
Моделируемая игра «Шашки» обладает определенным набором правил, и требований, а именно:
Размеры: доска 8×8 (подавляющее большинство вариантов шашек)
Правила
- Начальное расположение шашек. Возможны разнообразные варианты.
- Направление хода и взятия: по диагонали
- Возможность боя назад простой шашкой.
- Степень свободы хода дамки.
- Правила предпочтения взятия: при наличии нескольких вариантов боя в одних играх игрок может выбрать любой вариант, в других — его свобода выбора ограничена.
- Правила превращения простой шашки в дамку
Терминология:
Терминология программирования
Delphi — императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal.
Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
Наследование — механизм объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.
Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса...
ООП — объектно-ориентированное, или объектное, программирование парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.
Инкапсуляция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (то, что у него внутри), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных членов — методов, данных), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только интерфейс — спецификация объекта.
Полиморфизм (в языках программирования) — возможность объектов с одинаковой спецификацией иметь различную реализацию.
Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования.
Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».
Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием).
Полиморфизм позволяет писать более
абстрактные программы и
- внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именами методов, типами аргументов и их количеством);
- внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций).
Шашечные термины
Большая, или главная дорога— самая большая диагональ на шашечной доске (a1-h8).
Двойник — две параллельные диагонали a7-g1 и b8-h2, пересекающие большую дорогу.
Тройник — диагонали a3-f8 и c1-h6, находящиеся по обе стороны большой дороги, и две маленькие диагонали a3-c1 и f8-h6, их соединяющие.
Косяк — связанные между собой диагонали e1-a5-d8-h4-e1.
Бортовые поля — крайние вертикальные поля шашечной доски.
Простая — обычная шашка (не дамка).
Бортовые шашки — шашки, занимающие бортовые поля шашечной доски.
Дамочные поля — поля, находящиеся в последних горизонтальных рядах шашечной доски.
Дамка — шашка, достигшая дамочных полей.
Ход — передвижение шашки с одного поля на другое.
Тихий ход, или темп — простое перемещение шашки.
Ударный ход, удар, или бой — ход, сопровождающийся взятием шашки или шашек противника.
Поддача — преднамеренная постановка шашки под удар.
Размен — поддача под удар одной или нескольких своих шашек и взятие такого же количества шашек противника.
Рожон — белая шашка, расположенная на поле d6 или f6, или чёрная, расположенная на поле c3 или e3, и противостоящая двум шашкам противника, если у него нет возможности её атаковать.
Цугцванг — позиция в шашечной партии, когда любой ход одного из противников ведёт к ухудшению его позиции или поражению.
Дебют — первая стадия партии, во время которой соперники стремятся наилучшим образом развить свои силы и создать предпосылки для следующих операций.
Миттельшпиль — серединная часть партии (после 7-12 ходов), в которую переходит её дебютная часть.
Эндшпиль — 1.заключительная часть партии, в которую переходит миттельшпиль, когда у соперников остаётся не более, чем по шесть шашек.2.позиция с малым числом шашек.
Жертва — умышленная поддача шашки (иногда двух и более) под удар.
Запирание — положение, при котором одна или несколько шашек одной из сторон закрыты шашками противника и не могут ходить.
Оппозиция — противостояние белых и чёрных простых шашек на одной вертикали.
Отсталая (слабая) шашка — шашки a1 и h2 у белых, и a7 и h8 у чёрных (в начальной позиции в русских шашках).
Петля — приём ловли дамки.
Проходная шашка — шашка, которой обеспечен проход в дамки.
Прорыв — стратегический приём, позволяющий прорваться в дамки.
Распутье — положение, в котором простая, достигшая преддамочного ряда, должна следующим ходом избрать поле превращения в дамку. Обычно термин употребляется в том смысле, что любое превращение не спасает от поражения.
Решето — расположение шашек, при котором между ними имеются свободные поля.
Роздых — позиция со свободным темпом. Возникает, когда соперник обязан совершить взятие, но очередь хода принадлежит другой стороне.
Самообложение — положение, в котором собственные шашки ограничивают действие своих сил, что часто оказывается причиной поражения.
Связка — положение, в котором одна из сторон сковывает силы противника.
Столбняк — противостояние дамок, при котором очередь хода приводит к поражению.
Треугольник Петрова — расположение на доске при ловле тремя дамками одной дамки противника.
Турецкий удар — правило взятия, при котором уже сбитая, но не снятая с доски до окончания взятия шашка останавливает бьющую шашку.
Глава I. Шашки.
1.1 История шашечной игры.
|
Шашки — игра для двух и более игроков на многоклеточной доске, подобной шахматной, специальными фишками-шашками. Подобно шахматам, шашки воспроизводят действия сражающихся по определённым правилам сил.
Шашки входят в категорию так называемых игр шашечного типа, включающую множество разнообразных настольных игр для двух-четырёх игроков, в которые играют на расчерченной доске равноценными фишками. Кроме шашек, в неё также входят такие игры, как алькерк, го, ко-вай, латрункули, нарды, рэндзю, сенет и другие. Противоположная категория — игры шахматного типа — включает настольные игры для двух-четырёх игроков, в которые играют также на доске, но неравноценными фигурами (сянци, чатуранга, шахматы и другие). Общая их над-категория — игры шахматно-шашечного типа, куда входят и гибридные игры, например, шахматы.
Достоверных сведений об изобретении шашек история не сохранила. Вполне вероятно, что различные игры шашечного типа изобретались на протяжении истории человечества многократно и независимо, чему способствовала простота инвентаря и правил. Считается, что известные сейчас игры шашечного типа представляют собой различные этапы эволюции игр на доске, так что все они в определённом смысле родственны друг другу, что подтверждается близостью инвентаря и названий игр. Так, названия шашек: русское «тавлеи» и польское «warcaby», связаны с европейским названием нардовой игры: tavola reale (в Италии), tables reales (в Испании), tavli (в Греции), tavla (в Турции), tables или backgammon (в Великобритании), vrhcaby (в Чехии).
Принципиальным отличием шашек, от нардовых игр, стал отказ от игральных костей, которые были неотъемлемой частью многих древних игр (сенет, чатуранга), имитируя фактор случайности в жизни. Ещё одна категория шашечных игр развилась на Востоке. В этих играх шашки не двигаются, а лишь выставляются на доску, образуя те или иные развивающиеся конфигурации, между которыми, собственно, и идёт борьба (го, рэндзю).
Наиболее древние изображения игроков за игрой, определяемой как вариант шашек, имеются ещё в памятниках Древнего Египта.
Народам, населявшим территорию нынешней России и прилегающие регионы, шашки были известны ещё в III веке. Игра в шашки была широко распространена на территории всей Европы в Средние века и эпоху Возрождения, не говоря уже о более поздних временах.
1.2 Классификация
Возможны различные
Шашки так же разделяют по следующим признакам:
По размерам доски — 12×12 (канадские), 10×10 (международные), 8×8 (подавляющее большинство вариантов шашек), 10×8 (80-клеточные).
По особенностям правил игры:
- Начальное расположение шашек. Возможны разнообразные варианты.
- Направление хода и взятия: по диагонали или по вертикали/горизонтали.
- Возможность боя назад простой шашкой.
- Степень свободы хода дамки.
- Правила предпочтения взятия: при наличии нескольких вариантов боя в одних играх игрок может выбрать любой вариант, в других — его свобода выбора ограничена.
- Правила превращения простой шашки в дамку: существуют различия в правиле превращения в дамку при прохождении дамочного поля во время взятия нескольких шашек противника. В одних правилах шашка, попавшая в середине хода на поле превращения, становится дамкой сразу же и может продолжать бить, как дамка, в других — простая становится дамкой только на следующем ходу, если предыдущий завершился на поле превращения.
1.3 разновидность игр в шашки
Русские шашки
Используется доска 8×8 клеток. У каждого игрока в начальной позиции по 12 фишек — так называемых простых шашек, которые занимают первые три ряда с каждой стороны. В ходе игры шашки движутся по чёрным полям, они могут вставать только на незанятые поля. Простая шашка может ходить по диагонали вперёд на одну клетку, бить вперед или назад (при этом шашка движется по диагонали на две клетки, перепрыгивая через шашку или дамку соперника, которая снимается с доски; если из нового положения бьющей шашки можно побить другую шашку соперника, ход продолжается, и т. д.).
При достижении дамочного
поля (любого поля последней горизонтали)
или при бое через дамочное
поле простая шашка превращается
в дамку и продолжает бой по
правилам дамки (теперь она может
ходить на любое число полей по
диагонали в любом направлении)
В последнее время соревнования по русским шашкам проводятся по двум вариантам: классические русские шашки и т. н. турниры с выборочным жребием. Второй вариант предполагает наличие официально утверждённого списка начальных двух-трёх ходов (существует также вариант «летающие» шашки, в котором по одной шашке у каждой стороны в начальной позиции занимают какое-либо иное положение).
Международные шашки
Игра наиболее популярна в Европе. Используется доска 10×10 клеток. У каждого игрока в начальной позиции по 20 шашек, которые занимают первые четыре ряда с каждой стороны, «простая» шашка может бить вперёд и назад, дамка может ходить и бить на любое число полей. «Простая» превращается в дамку только тогда, когда она заканчивает свой ход на поле превращения. При бое «простой» через поле превращения она не превращается и продолжает бой как простая. Если после поля превращения «простая» может бить только как дамка, она остаётся на поле превращения и может продолжать бить как дамка только со следующего хода. Также как и в русских шашках существует правило «турецкого удара». При возможности нескольких вариантов взятия полагается бить максимально возможное количество шашек. Цель игры, как и в русских шашках, — съесть или запереть все шашки противника.
Армянские шашки
Игра ведётся на стандартной
64-клеточной доске, но шашки ходят
и бьют не по диагоналям, а по вертикалям
и горизонталям, взятие назад для
простой шашки запрещено. Ещё
одна их особенность — наличие
«джентльменских правил» —
Бразильские шашки
Правила аналогичны международным шашкам, но игра ведётся на доске 8×8, по 12 шашек с каждой стороны.
Канадские шашки
В канадские шашки играют на доске 12×12, по 24 шашки с каждой стороны. В остальном правила аналогичны международным шашкам.
Английские шашки (чекерс)
Английские шашки
Английские или американские шашки, или чекерс (англ. Checkers). Доска 8×8, в начальной позиции у каждого игрока по 12 шашек, расположенных в первых трёх рядах на чёрных клетках. Первый ход делают чёрные. «Простые» шашки могут ходить по диагонали на одну клетку вперёд и бить только вперёд, дамка может ходить на одну клетку по диагонали вперёд и назад и бить через одну клетку в любую сторону. Бить обязательно, если есть несколько путей, игрок может выбрать любой, не обязательно самый длинный, но пройти его до конца.
В 2007 году Джонатан Шеффер доказал, что существует беспроигрышный
алгоритм (см. программа Chinook), следуя которому игрок может
рассчитывать минимум на ничью в английских
шашках, вне зависимости от того, каким
цветом он играет.[1] Являясь беспроигрышным, данный
алгоритм тем не менее не является оптимальным[источник не
Пул (Pool Checkers)
Популярный в США вариант игры. Правила аналогичны международным шашкам, но игра ведётся на доске 8×8, по 12 шашек с каждой стороны. Ещё одно отличие — не требуется бить максимальное количество шашек.
Итальянские шашки
В итальянские шашки играют на шахматной доске размером 8×8 клеток, которая повернута на 90 градусов по сравнению со стандартной. Шашки игроков занимают первые три ряда с каждой стороны, располагаясь на белых полях. Правила игры в итальянские шашки похожи на правила игры чекерс, но имеют некоторые отличия:
- Простая шашка не может бить назад и не может бить дамку;
- Бить нужно максимально возможное количество шашек соперника, а при равных вариантах боя нужно бить максимальное количество дамок.
Испанские шашки
Правила подобны бразильским шашкам, но доска повёрнута на 90 градусов по сравнению со стандартной. Шашки игроков занимают первые три ряда с каждой стороны, располагаясь на белых полях. Ещё одно отличие — простые шашки не могут бить назад.
Поддавки (обратные шашки)
Правила игры в поддавки (здесь также существуют варианты 8×8 и 10×10) аналогичны правилам в соответствующие русские и международные шашки, однако цель игры — поддать или запереть все свои шашки.
Шашки-самоеды
Играются на доске 8×8. В отличие от русских шашек, каждый из игроков может (и обязан при возможности, то есть, с самого начала игры) бить как шашки противника, так и свои шашки (взятие всегда производится своей шашкой). Можно бить несколько шашек обоих цветов за один ход. В принципе, возможна игра на доске 10×10, но без правила обязательного взятия большинства.
Столбовые шашки
Старинный русский вариант, где побитая простая шашка не снимается с поля, а ставится под побившую её башню.
Ставропольские шашки
По сравнению с русскими шашками добавлено лишь одно новое правило, резко усложнившее характер борьбы: в ставропольских шашках любой из игроков вместо хода своей шашкой всегда может сделать ход за противника. Так, начиная игру, белые имеют право играть чёрной шашкой. Двигать чужие простые шашки можно только в свою сторону и брать ими следует только свои шашки. Взятие обязательно.
Диагональные шашки
Правила аналогичны правилам в русские шашки, но начальная расстановка — иная (большая диагональ свободна, сверху и слева от нее все клетки заняты черными шашками, снизу и справа — белыми).
80-клеточные шашки
Доска прямоугольная 10×8, то есть у белых и черных — по 15 простых. Правила аналогичны правилам в русские шашки.
Особенность — 3 дамки всегда выигрывают у одной дамки соперника, независимо от расположения.
Были предложены в середине 1960-гг. советским мастером, харьковчанином Николаем Петровичем Спанцирети. Особого распространения не получили. В середине 1980-х гг. в рижском журнале «Шашки» была опубликована статья о данной разновидности шашек.
1.4 Шашки, как вид спорта
В настоящее время спортивные соревнования проводят следующие организации по следующим шашечным системам игры:
- Европейская конфедерация шашек, штаб-квартира которой находится в столице Эстонии Таллине, организует командные и гроссмейстерские турниры по международным шашкам за звание чемпиона Европы.
- Всемирная федерация шашек (ФМЖД) — международные шашки, русские шашки, бразильские шашки, английские шашки и их разновидности. Также шашечная композиция. За победу в поединке участникам записывают в таблицу очко, за ничью — пол-очка, за поражение — ноль.
- Federazione Italiana Dama, FID — итальянские шашки.
- Association québécoise des joueurs de dames, AQJD — канадские шашки.
Чемпионы мира по шашкам определяются с XIX века, официальный статус с 1948 года имеют чемпи
Глава II. Среда программирования Delphi.
2.1 Краткое определение Delphi.
Delphi— императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal.
Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.
2.2 Целевая платформа.
Изначально среда разработки была
предназначена исключительно
Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.
Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC.
2.3 История языка.
Object Pascal — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных, с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.
Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу — там и буду лежать». Соответственно организуется и «многокучность».
Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.
Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.
- Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);
- Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET.
Delphi for .NET — среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET.
Первая версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0.
В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор[5].

- Создание модели электронного документаоборота
- Создание новой организации ресторанно-гостиничного комплекса
- Создание обучающей системы с использованием интернет-технологий
- Создание общественных организаций
- Создание оптового отдела и развитие ООО „Ziedu bāze”
- Создание организационных документов для офиса
- Создание поздравительного видеоролика средствами Adobe Premiere Pro
- Создание команды проекта
- Создание компьютерной системы учёта товара для ИП «Попов В.В.»
- Создание конкурентоспособного предприятия по техническому обслуживанию, диагностике и ремонту топливной аппаратуры дизельных автомобилей
- Создание контрактной системы в Российской Федерации как основы правового регулирования закупок товаров, работ и услуг
- Создание корпоративного портала
- Создание крестьянско-фермерского хозяйства
- Создание локальной вычислительной сети ООО "РАТИБОР"