Неформальный Эксель: OpenGL, игры на GDI+ и инфографика теперь и в VBA

in7v2sf2qvf_vwzjhnpkyggwjtw.png
На Хабре уже было довольно много интересных публикаций с неформальным использованием Экселя (списочек под катом). Этой статьёй мне хочется поделиться с сообществом красивыми результатами нашего французского коллеги. Автор, Тьерри Гасперм (Thierry Gasperment), создаёт подобную красоту на VBA под Excel / Access / Word и VB6. Увы, сайт на французском, а материалы, хоть и свободны для использования, но для просмотра и скачивания зачастую требуют регистрации. По этой причине я поместил наиболее интересные примеры на свой GitHub. Для тех, кто захочет «выйти за пределы шахматной доски», советую всё же потратить пару минут своего драгоценного времени и зарегистрироваться на сайте. Оно того стоит, так как количество и качество информации на сайте Тьерри заслуживают того. Для регистрации и просмотра рекомендую Chrome: автоматический перевод Edge порождает «гуртовщиков мыши» и прочие химеры вроде «glutMouseРазумный» и «Силовая установка» (PowerPoint).

Внимание, трафик! 4.5 Мб картинок!


Интересные статьи Хабра про неформальное использование Экселя

Рисование:

Ненормальное программирование:

3D-рендеринг:

Если что-то упустил, напишите в комментариях и я дополню список.


OpenGL

[Оригинал, авторизация не нужна]
По приведённой выше ссылке содержится десяток уроков использования OpenGL в VBA. В 11 уроке все примеры собраны вместе:

В обеих демках стрелочками можно изменить направление вращения.

И, чтобы не быть голословным, приведу пример, как оно выглядит на моём компьютере:
OpenGL в действии, 50 fps.


GDI+ и игры

Чтобы подключить GDI+ к Экселю, Тьери выложил целых два описания: тут (регистрация не нужна) и тут (тоже без регистрации).

Ну, а теперь игры! Игры классические, в описании не нуждающиеся. Единственное замечание — путь к игре не должен содержать кириллицы (по крайней мере на моём нерусском Экселе игры отказывались запускаться именно по этой причине).


Стрельба по уткам (французский Moorhuhn, Tir au coincoin)

[GitHub], [Оригинал, нужна авторизация]
Tir au coincoin
Аналог Moorhuhnа в описании не нуждается.


Арканоид (casse-brique)

[GitHub], [оф. сайт, нужна авторизация]
Арканоид (casse-brique)
Управление мышью. Стрельба пробелом.


Jeu de tir (Стрелялка типа Xenon)

[GitHub], [оф. сайт, нужна авторизация]
Многопользовательская стрелялка

Управление стрелками. Стрельба — контролом. Для второго игрока управление джойстиком. Примечание: в коде класса «clGame» содержится ошибка. В процедуре «RunGame»: необходимо заменить «config» на «data/config» (на GitHub лежит уже исправленный вариант).


Jeu de tir (Space invaders)

[GitHub], [оф. сайт, нужна авторизация]
q7cxvbi4pnrr4dnbtdn2-kh-6xu.png
Управление стрелками. Стрельба — пробелом.


Пакман

Для игры «Пакман» Тьери сделал отдельное пошаговое описание (ссылка, авторизация не нужна).

Для тех же, кто хочет сразу вспомнить классику, есть и ссылочка: [GitHub], [оф. сайт, нужна авторизация]

Пакман

Управление стрелками.


Работа с картами


Карта Франции с департаментами

Для инфографики очень полезно иметь карту, на которой удобно показывать всякую статистику. Посмотрим, как же генерируется такая карта. Пошаговое описание процедуры рисования карты Франции с департаментами содержится находится по следующей ссылке: оф. сайт, авторизация не нужна. В основе карты лежат пути (контуры), представленные в колонке «A». Самым лёгким путём создания путей является их копирование из SVG файла. Для быстрого извлечения путей из SVG файла автором была написана функция «ImportSVG», копирующая пути из прилагаемого файла «Départements_et_régions_de_France.svg». SVG файл при этом должен лежать в той же папке, что и таблица. Перед запуском необходимо удалить из таблицы картинку карты. Предварительно удалённую карту также можно перерисовать запуском функции «CreateShapes», использующую только пути из колонки «A».

Таблица с примером может быть скачана отсюда: [GitHub], [оф. сайт, нужна авторизация].

Карта Франции с департаментами

Эксель файл с примером карты Франции был создан в 2009 году, а потому, лионская метрополия, выделенная в отдельную административную единицу, на карте не представлена.

На карте представлены только европейские департаменты Франции. Заморские департаменты не показаны:

Такая вот познавательная получилась табличка.


Интерактивная инфографика

[GitHub], [оф. сайт, нужна авторизация]
Простейший случай интерактивной инфографики закрашивает в зелёный цвет департаменты, в которых показатели 2009 года были выше показателей 2008 года. В противном случае, департамент закрашивается красным. Обновление происходит автоматически, так что использование кнопки обновления, в общем-то, излишне.
Инфографика


Игра в департаменты

[GitHub], [оф. сайт, нужна авторизация]
Ну и напоследок «Игра в департаменты». Цель игры — кликнуть правильный департамент (указан в ячейке «C2») на карте. Если не угадали, кликнутый неправильный департамент отобразится в ячейке «C3». Текущий счёт выводится ячейку «C4». Для среднего россиянина (то есть меня), игра проходится только с помощью Википедии.
Игра в департаменты

© Habrahabr.ru