Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 2720 / 260 | Оценка: 4.03 / 3.74 | Длительность: 19:48:00
Специальности: Программист, Менеджер
Лекция 6:

Офисное программирование. Специфика и примеры

Реализация известной игры или создание документа - обложки.

Давайте перейдем от лозунгов и призывов к конкретным делам. Для начала рассмотрим создание документа - обложки. Как мы говорили ранее, это некоторый специальный вид офисных документов, в которых не требуется знания объектов Office 2000. Такой документ представляет программный проект под обложкой одного из офисных документов, причем не важно какую из обложек выбрать - Word, Excel или, например, Power Point. Создается такой документ почти также как и программный проект в любой визуальной среде. По этой причине он достаточно легко переносится в любую из этих сред. Типичным примером таких документов, как мы говорили, являются игры. Рассмотрим посему реализацию хорошо известной игры "Волк, Коза и Капуста". Для понимания реализации нужно знать основы VBA и работу с интерфейсными объектами формами и их элементами.

Игра "Волк, Коза и Капуста"

Всем известна задача о "Волке, козе и капусте". Вот ее краткая формулировка. Человеку необходимо без потерь перевести с левого на правый берег реки волка, козу и капусту. При этом необходимо выполнять следующие четыре правила:

  1. В лодке, используемой для перевоза, может находиться не более двух путников (человек, волк, коза и капуста - это путники). При попытке посадить большее число путников лодка перевернется.
  2. Если оставить волка и козу без присмотра человека, то волк немедленно съест козу.
  3. Если оставить капусту и козу без присмотра человека, то коза немедленно съест капусту.
  4. Без человека лодка не может переплыть на другой берег.

О реализации игры

В этой игре нет ничего, что потребовало бы привлечения специальных возможностей Office 2000, достаточно знать VB и интерфейсные объекты. Реализация этой игры может служить хорошим примером создания документа - обложки, то есть такого документа Office 2000, под обложкой которого находится обычный программный проект, написанный в ядре языка VBA, по существу на чистом VB, и не использующий обращений к специальным объектам приложений Office 2000. С другой стороны, реализация этой игры позволяет продемонстрировать создание и работу с визуальными объектами в документах Office 2000. Зачастую, крайне важно иметь видимые образы для используемых объектов документа и разрешать пользователю документа работать с этими образами, производя над ними те или иные манипуляции.

В нашей игре есть 8 основных объектов: Человек, Волк, Коза, Капуста, Река, Левый Берег, Правый Берег, Лодка. Я добавил еще один объект - Акулу, чтобы реку было страшнее переплывать. Эти объекты будут иметь видимые образы, манипулируя которыми игрок добивается достижения поставленной цели, доставить человека, козу, волка и капусту с левого на правый берег. Полем, где будет разворачиваться действие игры, будет обычная форма VBA, она будет образом объекта Река. На реке (форме) я размещу образы других объектов игры. Каждый из этих объектов будет задаваться объектом VBA класса Image из библиотеки классов MSForms.

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

Перед программистом, реализующим эту игру, стоят две основные задачи:

  • Спроектировать визуальный интерфейс игры, форму с ее объектами.
  • Написать обработчики событий для интерфейсных объектов.

Первую из этих задач он, скорее всего, как это сделал я, будет решать руками, визуально проектируя интерфейс, для решения второй задачи ему потребуется знание языка VBA и интерфейсных объектов. Знание объектов Office 2000 (объектов Word, Excel, Power Point) ему не понадобится, под какой бы документной обложкой не был реализован этот программный проект.

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

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

Форма в начальном состоянии в игре "Волк, Коза и Капуста"

Рис. 6.1. Форма в начальном состоянии в игре "Волк, Коза и Капуста"