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



              

21 Игра на 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.  Интерфейс игры "Тетрис"

Прекрасным логическим упражнением является игра "Master Mind", созданная Томашем Бречко. Она является графическим вариантом известной игры, называемой в просторечии "Быки и коровы". Поскольку можно менять длину задуманной комбинации, изменяя тем самым сложность игры, то игра подходит для школьников разного возраста. Вот как выглядит ее интерфейс:

Интерфейс игры

увеличить изображение
Рис. 12.4.  Интерфейс игры "Master Mind"

Игра "Мозаика", автором которой является Алексей Вальяно, представлена в двух вариантах. Более сложный представляет вариацию игры "Кубик Рубика" на плоскости. Простой - вариация игры "Puzzle", где требуется собрать картинку из отдельных кусочков. Картинку можно задавать любую, годится любой bmp-файл. С программистской точки зрения игра интересна тем, что здесь решается задача, часто требуемая на практике, когда требуется разрезать bmp-файл на части.

Ряд игр сборника относятся к так называемым головоломкам, где нужно решить задачу за минимальное количество ходов. Среди них хочется отметить игру "Выборы в России", авторами которой являются Людмила Никонова и Анна Ананьева. В игре использованы фотографии участников президентских выборов. При желании фотографии игроков можно заменить. Вот как выглядит интерфейс этой игры:

Игра

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

Не буду рассказывать обо всех играх, поскольку надеюсь, что многие из читателей сумеют на практике посмотреть, как эти игры работают.

Многим читателям этой книги могут быть интересны не столько сами игры, а то, как они реализованы. Поскольку код проектов открыт, то программисты имеют возможность познакомиться с готовыми решениями.

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

Конечно, этот сборник не является коммерческим продуктом, и я не гарантирую хорошее описание или отсутствие ошибок, которые могут возникать в ходе игры. Но все игры, вошедшие в сборник, прошли предварительное тестирование. Игры на диске представлены "россыпью".




Содержание  Назад  Вперед