Научная статья на тему 'Реализация игры «Морской бой» на основе автоматного подхода'

Реализация игры «Морской бой» на основе автоматного подхода Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
406
43
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Петрошенко Павел Александрович, Корнеев Георгий Александрович, Шалыто Анатолий Абрамович

Цель статьи – на примере игры «Морской бой» показать, как использовать систему взаимодействующих конечных автоматов и описывать структуру классов в объектно-ориентированных программах. На диске, прилагаемом к журналу, помещены программные материалы к данной статье. Музей занимательной

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Реализация игры «Морской бой» на основе автоматного подхода»

Петрошенко Павел Александрович, Корнеев Георгий Александрович, Шалыто Анатолий Абрамович

РЕАЛИЗАЦИЯ ИГРЫ «МОРСКОЙ БОЙ» НА ОСНОВЕ АВТОМАТНОГО ПОДХОДА

«Морской бой - вооруженное противоборство соединений (групп), частей и кораблей с противником...»1

ВВЕДЕНИЕ

В настоящее время развивается автоматный подход для написания программ, который называется также автоматное программирование [1]. Этот подход может быть эффективно использован при построении различных классов программ, например визуализаторов алгоритмов [2], программ обучения [3] и игр [4].

Однако в этих работах при описании поведения каждого из продуктов применялся только один автомат. Цель настоящей работы на примере проектирования известной игры Морской Бой показать, как использовать систему взаимодействующих конечных автоматов и описывать структуру классов в объектно-ориентированных про-

граммах, как это было предложено в работе [5].

1. РЕАЛИЗАЦИЯ

В программе автоматы реализованы в виде методов классов. Всего классов в программе более сорока, из них пять автоматных, каждый из которых содержит по одному автомату. Четыре автомата являются вложенными - их вызов осуществляется из состояний других автоматов. Автоматы взаимодействуют между собой по вложенности и с помощью обмена номерами состояний, а с внешней средой - при обработке событий, которых всего два: «Нажатие кнопки мыши» (МошвЕувШ) и «Нажатие кнопки «Начать заново». Источниками событий (Еуеп1Ргоу[йег), таким образом, являются обработчик событий мыши на игровом поле и соответствующая кнопка (ButtonEventProvider).

Для обработки событий используется очередь необработанных событий (EventSto-rage). Каждый автомат, находясь в состоянии, в котором ожидается соответствующее

1 Поленин В.И. Морской бой, применение сил в морском бою или тактическая операция? // Военная мысль. 2003, № 10.

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

Для реализации данного проекта использован объектно-ориентированный язык Java и среда разработки IntelliJ IDEA 4.

При проектировании программы в части пользовательского интерфейса применялась стандартная архитектура «Модель - Вид - Контроллер» (Model - View -Controller). Одно из применений данной схемы - реализация игрового поля. Класс, представляющий модель поля, реализует внутреннюю структуру: физические характеристики и состояния ячеек игрового поля. В свою очередь, класс «Представление Игрового Поля» (Field) для этой модели определяет и реализует все функциональные особенности и детали визуализации. Изменения в текущие состояния полей вносят автоматные классы.

Схема «Модель - Вид - Контроллер» использована также и в механизме протоколирования состояний автоматов. Класс, реализующий модель системы протоколирования (LoggingModel), определяет ее функциональность и структуру. Средства отображения протоколов представлены классами, реализующими специальный интерфейс -представление протоколов (LogView).

В программе использованы следующие паттерны объектно-ориентированного проектирования: Одиночка (Singleton) и Наблюдатель (Observer).

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

ки, содержащие информацию, относящуюся к событию, начинаются со знака«#».

Независимо ведется протоколирование основных этапов работы программы для логического разбиения всего протокола на отдельные части, такие как «Расстановка кораблей Пользователя», «Расстановка кораблей Робота», «Сражение». Протоколирование осуществляется при изменении состояния хотя бы одного автомата. При наличии полного протокола можно восстановить ход работы программы. Полный протокол является «самописцем» внутреннего жизненного цикла программы, однако имеющейся в нем информации для восстановления хронологии боя недостаточно.

2. ОПИСАНИЕ ПРАВИЛ ИГРЫ «МОРСКОЙ БОЙ»

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

Противником Пользователя является Робот (Компьютер), который автоматически расставляет корабли на своем поле по указанным выше правилам.

После расстановки начинается бой. Он представляет собой поочередные выстрелы Пользователя и Робота. При попадании в корабль противника участник боя получает возможность проведения внеочередного выстрела. Игра заканчивается при

Рисунок 1. Внешний вид программы.

ста. Сначала ищется самая длинная вертикальная или горизонтальная последовательность непрострелен-ных клеток. Затем из нее случайным образом выбирается клетка для удара.

4. ДИАГРАММА АВТОМАТНЫХ КЛАССОВ

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

3. ПОСТАНОВКА ЗАДАЧИ

Целью настоящей работы является апробирование объектно-ориентированного программирования с явным выделением состояний при создании классического варианта игры «Морской бой», которая имеет пользовательский интерфейс, представленный на рисунке 1.

Отметим, что при создании игры не ставилась цель выбора оптимального алгоритма игры Роботом.

Основная идея алгоритма выбора роботом клетки для удара достаточна про-

Диаграмма автоматных классов, с которыми работает апплет, приведена по адресу http://is.ifmo.ru/projects/seabattle/.

Диаграмма иллюстрирует отношение автоматных классов. При этом объект центрального автомата A0 содержит в себе и зависит от объектов трех автоматных классов Al, A2, A3. Принадлежность автоматных объектов Al, A2 и A3 объекту класса A0 продиктована вложенностью автоматов.

Связка классов Automaton®Enumerable реализует паттерн объектно-ориентированного программирования Enum. Это гарантирует, что для каждого автоматного класса будет создан единственный объект. Класс Automaton является базовым автоматным классом. В нем реализована общая для всех автоматов функциональность.

5. КЛАСС ОСНОВНОЙ ПРОЦЕСС (МАШРКОСЕББ)

Словесное описание

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

Структурная схема класса

Структурная схема класса приведена на рисунке 2.

Главныш автомат (АО)

Словесное описание

В состояниях главного автомата АО вложены автоматы расстановки кораблей

Пользователя, расстановки кораблей Робота и игрового процесса.

Схема связей

На рисунке 3 представлена схема связей автомата АО.

Граф переходов

На рисунке 4 представлен граф переходов автомата АО.

Ы!ык1н ■МИйГнай <ЧШ»А' и

ОвЬЬЛы и|М||и>.

шниН

Рисунок 3. Схема связей главного автомата АО.

Рисунок 4. Граф переходов главного автомата АО.

6. КЛАСС РАЗМЕЩЕНИЕ КОРАБЛЕЙ ПОЛЬЗОВАТЕЛЕМ (иБЕЕАЬЬОС)

Словесное описание

Класс Размещение Кораблей Пользователем содержит автомат расстановки кораблей Пользователя (А1).

Структурная схема класса

Структурная схема класса представлена на рисунке 5.

Автомат Расстановка кораблей Пользователя (А1)

Словесное описание

Этот автомат выполняет контроль расстановки Пользователем своих кораблей. Автомат производит выбор типа устанавливаемого корабля, проверку корректности выбора позиции и направления корабля. При

успешном завершении проверки производится установка корабля.

Схема связей

На рисунке 6 представлена схема связей этого автомата А1.

Граф переходов

На рисунке 7 представлен граф переходов автомата А1.

Л--1 п.

■ М-П.нь ни Г:.:.Ы

ГмГ-.ч'. Г л" и .чМГКЩ-Т

Ай1ЛКМ.Т н1

¡лйАМлдвд Мрсшсркй ПТй

____ л1 1 И К4Й

z2];. П-чПучНТк

Р.Ч1 I ■'.<П.1'

|йГикг

г

ТФьущпО

лЦОЛт-Ь

лкушЛпвА ЛОПиОЙЛГПНП

инШИ

Рисунок 5. Структурная схема класса А1.

п1гЯвич

МрЛттч|Я

вёмм

,>-|||н .ним рии*й1ь .Щ» }< мешаны.

4»Э|]Гк УСЧШНГО

НО 1Т

■ 1$ на

ГШ ж2й

В« ж

/1ЧЛ1|Ш1И«1|М

I Е^^'И

щиАн

[Мит иигм 5П/р|.

ледлЗллн

■¥И «ДЯТЦПГ

(¡Лив

МЩ1 I ^илгАл^к'кг)

Рисунок 6. Схема связей автомата Расстановка кораблей Пользователя А1.

7. КЛАСС РАЗМЕЩЕНИЕ КОРАБЛЕЙ РОБОТОМ (ЯОБОТАЬЬОС)

Словесное описание

Класс Расстановка кораблей Роботом функционально «похож» на класс Расстановка кораблей Пользователем (А2). Процесс установки очередного корабля реализован в автомате расстановки кораблей Робота.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Структурная схема класса

Структурная схема класса представлена на рисунке 8.

1 -м 1 Б<ДОр ", '4 ■!■.■'■,■>■• 1» ■3 1>Н1М<'« птыщн

& ЕИ!

■нп 1

1 Т

П ^гчнгмтпглП'п ! Пдо^иаь&р* ло>1 .ли

чнгч

1Я) лай

и « 5 мин« т

5 №Н№ЧН91 к £ рмшаамч

ыкшн м—

н1й

Рисунок 7. Граф переходов автомата Расстановка кораблей Пользователя А1.

Атолл ЛЙ

4*1

/■■п* ±Я>. «то

> ■: ,1 РИ 1гкжик |

Щ йи

(ЗрОПФЧи

ПЦШС

1I1/Г1,

фйЬкг вкп ■Утл

■ТЦЯЙЧ'

ЧЧВДЙ

уцо

Рисунок 8. Структурная схема класса А2.

Автомат Расстановка кораблей Робота (А2)

Словесное описание

Автомат расстановки кораблей Роботом автоматически расставляет корабли на игровой площадке. Автомат производит выбор типа очередного устанавливаемого корабля, выбор позиции и направления установки, а также осуществляет саму установку. Данный автомат вызывается из главного автомата программы.

Схема связей

На рисунке 9 представлена схема связей автомата А2.

Граф переходов

На рисунке 10 представлен граф переходов автомата А2.

Рисунок 9. Схема связей автомата Расстановка кораблей Робота А2.

Рисунок 10. Граф переходов автомата Расстановка кораблей Робота А2.

8. КЛАСС ПРОЦЕСС ИГРЫ (вАМЕРКОСЕББ)

Словесное описание

Класс Процесс Игры реализует автомат управления игрой А3, обеспечивающий управление боем Пользователя и Робота.

Структурная схема класса

Структурная схема класса представлена на рисунке 11.

Автомат Управление игрой (А3)

Словесное описание

Автомат управления игрой реализует один такт игры, в который входит выстрел Пользователя и выстрел Робота. Процесс выполнения выстрела Роботом (один ход) реализован во вложенном в данный автомат автомате А4. При успешном выстреле

^■иниишм

ЛиИ.'НШ ирСАЛ'Ч. игрики

■.¡г. ШШ Ги- ьКЯ IШ11

^IIIНIк ДЯ'ЛГ

Пользователя (при поражении им цели Робота) вложенный автомат А4 не вызывается. Этим обеспечивается предоставление Пользователю внеочередного хода. Данный автомат вызывается из главного автомата программы.

Схема связей

На рисунке 12 представлена схема связей переходов автомата А3.

Даништ АЗ

- ' 1М

■'1 АтрлвуГы 1110

гМ ТИ1

н4 нифг

Ьпнпннм ■пиары

ГЪч..

г°1IIЬ1 Н' II I 11^'Н сАьжни

Л11ЛЪ 1НйЯИ«т1к

вт

Им"-■пн АД

Рисунок 11. Структурная схема класса А3.

оилйС^ь-

а^ЛР^лй га!

ЧВДЦ[ПМПДрАСПВ

к«

пйи

кпи

*Б0

Г^:мн*-|:|.:| ,|"Л|:-ннр |-Ьш-л|:кч|г- м

РУЛзт

иилШнь

ППЪЗМПГЧЛ-

||.НпЫЧ1ГЫ

■лассйк и »ДОкЛ)

г1.|>-. :нн пкньн

НЧ-НЧП!» -".ИН-П

Рисунок 12. Схема связей автомата Управление игрой А3.

Граф переходов

На рисунке 13 представлен граф переходов этого автомата.

9. КЛАСС АТАКА РОБОТА (КОБОТАТТАСК)

Словесное описание

Класс Атака Робота реализует автомат, обеспечивающий выбор очередного хода Робота. Этот класс не принимает никаких внешних воздействий и использует только локальные методы, не воздействуя ни на какие другие объекты, кроме объекта

класса Робот (АМвАПаек). Структурная схема класса представлена на рисунке 14.

Автомат Очередной ход Робота (А4)

Словесное описание

Автомат выполнения очередного хода обеспечивает выбор поля для удара. При этом производится завершение незаконченной атаки. В случае поражения цели производится внеочередной выстрел. Автомат вызывается из автомата управления игрой.

Схема связей

Схема связей данного автомата представлена на рисунке 15.

Рисунок 13. Граф переходов автомата Управление игрой А3.

Рисунок 14. Структурная схема класса А4.

Граф переходов

Схема граф переходов данного автомата представлен на рисунке 16.

ЗАКЛЮЧЕНИЕ

Использование автоматного подхода значительно упростило построение логики программы, отладку и реализацию разработанных алгоритмов. Представление логики в виде системы взаимосвязанных графов переходов весьма наглядно и удобно для формального изоморфного перехода к тексту программ.

Апплет, приложение и исходные коды программы приведены на сайте http:// is.ifmo.ru/projects/seabattle/.

Рисунок 15. Схема связей автомата Очередной ход Робота A4.

Рисунок 16. Граф переходов автомата Очередной ход Робота A4.

Литература

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1. Шалыто A.A. Технология автоматного программирования // Мир ПК. 2003, № 10. С. 74-78, http://is.ifmo.ru/works/tech aut prog

2. Казаков M.A., Шалыто A.A. Использование автоматного программирования для реализации визуализаторов // Компьютерные инструменты в образовании. 2004, № 2. С. 19-33, http:// is.ifmo.ru/works/art vis/

3. Мазин M.A., Парфенов В.Г., Шалыто A.A. Анимация. FLASH-технология. Автоматы // Компьютерные инструменты в образовании. 2003, № 4. С. 39-47, http://is.ifmo.ru/projects/flash/

4. Беляев A.B., Суясов Д.И., Шалыто A.A. Компьютерная игра «Космонавт». Проектирование и реализация // Компьютерные инструменты в образовании. 2004, № 4. С. 75-84, http://is.ifmo.ru/ works/ cosmo article.pdf

5. Туккель Н.И., Шалыто A.A. Автоматы и танки // BYTE / Россия. 2003, № 2. С. 69-73, http:/ /is.ifmo.ru/works/tanks new/

Петрошенко Павел Александрович, магистрант кафедры1 «Компьютерные технологии» Санкт-Петербургского государственного университета информационные технологий, механики и оптики (СПбГУ ИТМО).

Корнеев Георгий Александрович, аспирант кафедры «Компьютерные технологии» СПбГУ ИТМО.

Шалышо Анатолий Абрамович, доктор техн. наук, профессор, заведующий кафедрой «Технологий программирования» СПбГУ ИТМО.

© I авторы, 2005. Our authors, 2005.

i Надоели баннеры? Вы всегда можете отключить рекламу.