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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


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


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


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

Чем заняться айтишнику в армии или как я на VBA игры писал
RPG-игра в рабочей книге Excel
Игры в Excel 2010: Tower Defense и Missile Command
Отец с сыном создали 3D-шутер при помощи Microsoft Excel


Рисование:

Как создавать спирографы в Excel
ExcelArt – изометрия «на халяву». Рисуем псевдообъемный телефон без 3D и Фотошопа
Рисунки в MS Excel при помощи Apache POI
Японский старик создает удивительные картины с помощью Excel (Подождите, Excel?)
Шикарные рисунки в Microsoft Excel
"… и в каждой шутке есть доля шутки"


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

Завершился чемпионат мира по Excel
Assembler в 30 строк на Excel
Машинное обучение в Excel при помощи Python и PyXLL
Управление Arduino с помощью Excel
Расширяем возможности MS Excel 2010 c помощью R
Формирование диаграммы телефонных звонков в SVG формате при помощи Excel
Подключаем к Экселю GPU и ускоряем Эксель в 300 раз (Ну а почему бы не попиариться и мне? Статья про запуск OpenCL из VBA.)


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

3D-движок, написанный на формулах MS Excel (картинки к сожалению битые)
Трехмерный движок на формулах Excel для чайников
Microsoft Excel: революционный игровой 3D-движок? (картинки к сожалению частично битые)


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


OpenGL


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


  • [Пакет модулей VB для OpenGL (оф. сайт, нужна регистрация)]
    [GitHub]
  • [Библиотека FreeGLUT (оф. сайт, нужна регистрация)]
    [GitHub]
  • [Демо с использованием FreeGlut (оф. сайт, нужна регистрация)]
    [GitHub]
  • [Демо без использования FreeGlut (оф. сайт, нужна регистрация)]
    [GitHub]

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


И, чтобы не быть голословным, приведу пример, как оно выглядит на моём компьютере:
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], [оф. сайт, нужна авторизация]

Управление стрелками. Стрельба — пробелом.


Пакман


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


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


Пакман


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


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


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


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


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


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


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


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


  • 971 Гваделупа
  • 972 Мартиника
  • 973 Французская Гвиана
  • 974 Реюньон
  • 976 Майотта (Честно говоря, впервые о таком слышу. Живёт там кто-нибудь из хабражителей? Было бы интересно почитать о жизни там, да и вообще о жизни во французских заморских департаментах).

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


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


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


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


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

Источник: https://habr.com/ru/post/691560/


Интересные статьи

Интересные статьи

Наш арт-директор Женя Гребенщиков решил попробовать сделать прототип игры Wordle в ProtoPie. Рассказываем, что получилось.
Поговорим о том, как менялась культура музыкального потребления и какие технологические новшества этому поспособствовали. Свой рассказ (из нескольких частей) мы начнем с XVII века — т...
Инфекционные заболевания распространялись по планете вместе с людьми. Даже в современную эпоху вспышки происходят практически постоянно, хотя не каждая вспышка достигает пандемического уровня...
На определённом этапе разработки своей игры я осознал, что мне нужна система диалогов с лицами-аватарами. Поэтому я решил создать генератор лиц на основе знаменитой игры Papers, Please. Г...
Компании переполнили рынок товаров и услуг предложениями. Разнообразие наблюдается не только в офлайне, но и в интернете. Достаточно вбить в поисковик любой запрос, чтобы получить подтверждение насыще...