Мир объектов Excel 2000

Игра на VBA


В качестве одного из семестровых заданий я предложил каждому из студентов написать игру на VBA. Я ставил два условия. В ходе написания игры студенты должны продемонстрировать свое умение "программировать в классах". Это означало, что вначале должны быть созданы классы объектов, например, классы: "игрок", "доска", "карта". Затем, оперируя объектами этих классов, следовало написать реализацию игры. Второе условие касалось содержания игры. Игра должна быть ориентированной, прежде всего, на школьников и требовать от них некоторых умственных усилий, то есть относится к классу "развивающих" игр.

Результатом этой работы был сборник из 21 игры с открытыми проектами, доступными для изучения.

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

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

Нужно отметить, что большинство игр, созданных студентами, превзошли созданный мной образец. Приведу краткое описание игр, вошедших в сборник. Первым делом, расскажу об игре "Подкидной дурак", созданной Александром Соловьевым. Эта игра была создана еще два года назад, когда я впервые прочитал курс по Офисному программированию, и была первым опытом создания игр в рамках этого курса. Для реализации стратегии игры компьютера в ней использовались серьезные математические методы, в частности, метод ветвей и границ. Помимо применения классов VBA та часть игры, которая связана с поиском подходящего хода, была написана на Visual C++ и подсоединена к проекту на VBA через аппарат DLL. Хотя компьютер играет честно, "не подсматривая" в карты противника, выиграть у него совсем не просто. Игра сделана вполне профессионально и, полагаю, справедливо, представленная на конкурс Office Extensions, она выиграла первый приз. Вот как выглядит интерфейс этой игры:


увеличить изображение
Рис. 12.1.  Интерфейс игры "Подкидной дурак"

Все остальные игры сборника создавались в течение двух месяцев. Игра "Lines", автором которой является Александр Галушко, и игра "Тетрис", созданная Александром Кузнецовым и Андреем Грязновым представляют вариации на тему хорошо известных игр. В игре "Lines" неплохо реализован алгоритм поиска кратчайшего пути из точки в точку на доске, занятой фигурами. Ее интерфейс с разнообразными фигурками мне нравится больше, чем классический вариант этой игры, где используются только разноцветные шарики. Игра "Тетрис" имеет скромный интерфейс, но вполне достаточный для тех, кто любит эту знаменитую игру. На рисунках 12.2 и 12.3 можно видеть, как выглядят эти игры:


Рис. 12.2.  Игра "Lines"


Рис. 12.3.  Интерфейс игры "Тетрис"



Содержание раздела