Система управления танком для игры Robocode. Объектно-ориентированное программирование с явным выделением состояний. Программная документация



(C) 2001 г. Н.И.Туккель, А.А.Шалыто

Санкт-Петербургский государственный институт точной механики и оптики
(технический университет)

Отсюда можно скачать полный текст документации в формате pdf (283 кб)
А здесь лежит исходный текст программы на Java (13 кб)

Для алгоритмизации и программирования задач логического управления была предложена SWITCH-технология, которая в дальнейшем была развита применительно к разработке программного обеспечения событийных систем (http://is.ifmo.ru).

До последнего времени в SWITCH-технологии объединялись два стиля программирования - процедурный и автоматный. При этом авторов интересовал вопрос совмещения объектно-ориентированного и автоматного стилей.

Первый шаг в этом направлении был выполнен авторами при программировании в объектно-ориентированной среде быстрой разработки "Flora" ("Использование SWITCH-технологии при разработке программ в среде Flora/C+. Модель технологического процесса в цехе холодной прокатки. Проектная документация", http://is.ifmo.ru). При этом автоматы, описывающие основные алгоритмы функционирования системы, были выделены как отдельные объекты среды разработки.

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

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

Исходя из целей настоящей работы, нас интересовала такая игра, которая в качестве языка программирования использовала бы не специализированный язык, а один из широко распространенных объектно-ориентированных языков. Единственной известной авторам игрой, отвечающей этому требованию, является недавно (в 2001 году) разработанная компанией "Alphaworks" игра "Robocode" (http://robocode.alphaworks.ibm.com).

Эта игра позиционируется фирмой IBM как средство для обучения программированию на языке Java на примере создания программы, являющейся системой управления танком, предоставляемым средой исполнения.

Настоящая работа содержит документацию, созданную при проектировании программы управления танком.

Рассматриваемая система управления создавалась в 2001 году. С тех пор среда исполнения претерпела некоторые изменения, однако танк продолжает весьма успешно функционировать без корректировки настоящей документации.

С реакцией "общественности" на качество разработанного танка можно ознакомится, например, в форуме на сайте игры "Robocode" (http://robocode.alphaworks.ibm.com) и в статье Озеров А.А. Четыре танкиста и компьютер // Магия ПК. 2002. № 11. (http://is.ifmo.ru, раздел "О нас"). При этом в некоторых высказываниях в указанном форуме танк назван "легендарным" :-).

Более подробно с использованным в данной работе подходом можно ознакомится в статье Туккель Н.И., Шалыто А.А. Танки и автоматы // BYTE/Россия. 2003. № 2. (http://is.ifmo.ru, раздел "Статьи").

На данный момент (август 2003 года) авторам работы неизвестно о существовании каких-либо других танков, для которых опубликована проектная документация. Эта документация позволила весьма просто осуществить рефакторинг программы, выполненный Д.В. Кузнецовым совместно с А.А. Шалыто с целью создания "более объектной" реализации.