Doom в excel как запустить

3D-движок, написанный на формулах MS Excel
3D-движок, написанный на формулах MS Excel

Эта статья посвящена тому, как я смог написать 3D-движок игры Doom только на формулах Excel. Я реализовал следующий функционал:

  • бесконечная процедурно генерируемая карта лабиринта
  • рендеринг трассировкой лучей в реальном времени
  • вычисление окклюзии
  • рендеринг простейшего освещения
  • шейдер освещения и вычислений
  • движок естественного движения
  • в 3D-движке не используются макросы

* чтобы управлять игрой нажатием клавиш, нужны макросы, управляющие движением с помощью одной простой инструкции копирования.

Можете скачать файл и протестировать его самостоятельно!

Файлы

  • Файл без vba: http://public.cbel.free.fr/?file=Doom.xlsx
  • Файл с vba для перехвата нажатий клавиш: http://public.cbel.free.fr/?file=Doom.xls-v1.1.xlsm
  • Файл с vba и высоким разрешением: http://public.cbel.free.fr/?file=Doom-HD.xls-v1.1.xlsm
  • Файл с vba и кнопками вместо горячих клавиш: http://public.cbel.free.fr/downloads/?file=Doom.xls-Buttons-v1.1.xlsm

Контекст

Учитель информатики однажды сказал нам: «любые вычисления можно выполнить в любом языке программирования, даже через формулы электронной таблицы».

Поначалу, какой бы мудрой ни казалась эта фраза, упоминание в этом списке Excel выглядело глупо…

Затем, после изучения машины Тьюринга, фраза стала для нас полностью верной, хотя и не вполне реализуемой.

Получив многолетний опыт работы с Excel, мы уже поняли, что единственное ограничение формулы Excel — недостаток способов ввода-вывода.

Но множество задач, решаемых исключительно формулами, по-прежнему выглядит впечатляюще.

Как бы то ни было, эта работа — не просто какое-то хвастовство… У меня были для неё серьёзные причины.

Электронные таблицы — это мощный инструмент, которому должен научиться каждый, ведь его можно использовать почти в любых деловых задачах.

Однако когда большинство людей доходят до решения более сложных задач, они стремятся использовать язык VBA, даже не понимая толком, зачем.

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

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

При использовании в бизнесе формулы обладают следующими преимуществами перед макросами:

  • Их быстрее писать для любого человека, если он не профессиональный программист-аналитик
  • Их проще поддерживать любому человеку, а не только профессиональному программисту. (Чаще всего макросы становятся бесполезны после ухода их разработчика.)
  • Гарантированное качество благодаря постоянной проверке значений. (Принудительное применение техники «разработка через тестирование»)
  • Они более эффективны в долговременной перспективе благодаря процессу создания формул в стиле «думай, прежде чем писать».
  • И они совершенно точно гораздо лучше интегрированы в сам инструмент создания электронных таблиц и следуют изначальному паттерну разработки электронных таблиц, в то время как макросы часто оказываются специфическими конструкциями, требующими в дальнейшем активной поддержки.

Примечание: эти пункты в основном относятся к процедурам, используемым как макросы; дополнительная функция, написанная на VBA, может увеличить эффективность, не снижая качества.

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

Если конкретнее, то я нашёл всего два случая, когда потребовался VBA:

  • Добавление специфического ввода или вывода (как я сделал здесь для получения событий клавиш), потому что формула всегда ограничена изменениями в самой ячейке
  • Некоторые сложные задачи (например, оптимизация), в которых вычисления занимают слишком много времени и/или пространства. Но такие задачи довольно редки в реальной жизни.

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

Карта

Моя электронная таблица должна была стать игрой в стиле Doom в лабиринте.

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

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

Для создания случайно генерируемой карты нам нужно быть последовательными, поэтому функцию rand() использовать нельзя, ведь мы не можем контролировать начальное состояние (seed) генератора случайных чисел.

Начальные состояния генератора случайных чисел должны быть позициями (x;y) на карте, чтобы мы могли получать разные значения для каждой позиции, и мы не можем получить результат предыдущего случайного числа как начальное состояние для следующего, или нам придётся хранить всю карту с самого начала.

Обычные хэш-функции, несмотря на обеспечение высокого качества случайных чисел, оказались слишком затратными, поэтому мне нужно было найти другое решение.

Эксперименты с фрактальным генератором тоже оказались довольно затратными и давали интересные результаты только для небольшой части карты.

Тогда я обнаружил метод средних квадратов (middle-square method), который на самом деле не очень «случаен», потому что в нём используются последовательные начальные состояния. Но он подсказал мне идею того, что можно брать десятичную часть любого другого вычисления.

Я выяснил, что если брать десятичные части sin(x)+cos(y), то наконец-то получаются красивые числа без какого-либо прослеживаемого паттерна, а время вычислений при этом на удивление малО.

Для получения десятичных частей математические функции mod() и floor() гораздо более эффективны по сравнению с текстовой функцией подстроки mid().

Я стремился сделать карту похожей на крысиный лабиринт, поэтому создавал блоки не сплошными, чтобы они походили не на пещеры (в стиле Minecraft), а на лабиринт.

То есть нам нужны тонкие стены с двумя возможными стенами для каждого квадрата. Тогда мы сможем брать два блока чисел вместе с тем же случайным значением.

Плотностью размещения стен управляют два параметра.

С учётом этих правил мы можем или отображать лабиринт, или тестировать любую стену с заданной позицией с помощью трассировки лучей.

Стоит заметить, что карта «плоская», без подъёмов и спусков. Можно было добавить рельеф с помощью генератора рельефа (подошёл бы алгоритм Diamond-Square, потому что его можно написать без рекурсивной функции), но весь последующий процесс сильно облегчило бы вырезание отверстий в полу и потолке с дополнительным значением уровня.

Так, похоже, мы в аду

Так, похоже, мы в аду

Трассировщик лучей

Трассировщик лучей должен определять для каждого пикселя экрана, какой первой поверхности касается луч, и получать от неё информацию (расстояние, угол падения света, цвет и т.д.).

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

Окклюзия

Первым сложным моментом будет нахождение первого объекта на пути каждого луча.

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

То есть процесс можно упростить до горизонтального «радара» в одном измерении.

Тогда у нас нет иного выбора, кроме как проверять луч на первой вероятной стене, потом на второй вероятной, и так далее, пока мы не найдём нужную.

Определение того, какую стену нужно проверять — это всего лишь тригонометрическая задача.

И поскольку у нас всего два типа стен, мы можем тестировать оба типа, а потом сохранять только ближайшую.

Одно из ограничений Excel заключается в отсутствии условного цикла и для экономии времени можно только пропускать тело цикла. Поэтому нам нужно ограничить максимальное расстояние проверки, считая, что если на этом расстоянии стена не найдена, то её нет.

Пол и потолок

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

Затем для каждого пикселя мы определяем, дальше ли стена, чем потолок или пол, и соответствующим образом задаём цвет пикселя.
Эффективное сравнение реализовано использованием только проекции расстояния до стены и до пола/потолка по оси камеры. Конечное расстояние затем получается с помощью предварительно вычисленного коэффициента расстояния в шейдере расстояний. Постоянные предварительно вычисленные значения нужны для экономии ресурсов.

Освещение

Конечное освещение берётся из шейдера освещения, представляющего собой свет факела, в направлении камеры (и оружия).

Когда поверхность точно горизонтальна к лучу света, также добавляется отражение.

Стена может быть только горизонтальной (если добавить наклон, то он просто смещает окно экрана вверх и вниз, не поворачивая камеру)

Для каждого угла радара мы получаем угол между лучом и ближайшей найденной стеной.

Коэффициент отражения — это просто функция угла.

В конце концов освещение становится результатом функции коэффициента расстояния, потолка/пола или разрешения стен, коэффициента отражения и коэффициента шейдера освещения.

Экран дисплея

Эффективный дисплей реализуется с помощью условного форматирования — градиент цвета зависит от значения ячейки.
Сокрытие значения выполняется форматированием ячейки.

Коллизии со стенами

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

Кроме того, игрок не должен прилипать к стене при контакте с ней. Он должен двигаться, скользя вдоль стены, пока не попадёт в угол.

Также необходимо соблюдать минимальное расстояние между стеной и игроком, чтобы избежать графических проблем и придать стенам толщину.

Оказалось, что довольно сложно обработать все возможные варианты стены и позиций игрока относительно этой стены.

Изучено 25 вариантов и к ним привязано три возможных исхода (для каждой оси смещения), чтобы получать результаты за как можно меньшее количество проверок.

Несмотря на то, что это казалось самой короткой частью игры, таблица смещений стала самой сложной в реализации. (В 10 раз больше, чем карта, в два раза больше кода распознавания стен.)

Враги

Привет, красное привидение!

Привет, красное привидение!

Графический рендеринг

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

Целый отдельный лист посвящён вычислению формы сфер с учётом горизонтального радиуса и вертикальной высоты овоида. Для анимирования существа используется соотношение высоты/ширины.

В рендеринге стен и потолка используется градиент только по одному цвету, однако Excel позволяет использовать два последовательных (не сливающихся) градиента. Поэтому врагов можно отображать другим цветом. Для этого градиента можно использовать диапазон значений ниже 0, при том, что значение 0 — это чёрный цвет.

Меняющуюся прозрачность реализовать оказалось не сложнее, чем плавный рендеринг поверхности сферы. Луч получает толщину сферы, делая пиксель более цветным.

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

Здесь вычисления тоже производятся в горизонтальной плоскости, а максимальный объём вычислений подготавливается перед завершением 3D-вычислений для каждого пикселя.

Поведение врагов

Чтобы избежать реализации сложного и некачественного процедурного поведения, враги не будут реагировать на действия игрока. Их позиция определяется только временем, они движутся по сложной траектории, чтобы паттерн был не таким заметным.

Чтобы позиция, скорость и ускорение были непрерывными (для плавного движения), я сделал траекторию своего рода конечным фракталом большого круга с добавленными к нему небольшими круговыми вариациями. Коэффициент соотношения между кругами (и даже соотношение x/y) случаен и ненатурален, поэтому траектория никогда не самозацикливается. Чтобы получить хороший случайный генератор детерминированных траекторий, я создал отдельный лист, отображающий траекторию.

Так как траектории не могут учитывать стены, я был вынужден оставить монстрам возможность проходить сквозь них.

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

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

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

Атаки врагов

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

Область видимости каждого монстра вычисляется на вкладке радара с учётом расположения стен.

Игрок получает урон, когда он оказывается внутри радиуса врага. Если игрок специально забирается внутрь врага, происходит то же самое.

Это создаёт эффект наносимого игроку урона — простой эффект негативного цвета во весь экран.

Добавлен также ещё один эффект — отмена рендеринга всех остальных врагов при нанесении урона игроку.

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

Атаки игрока

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

Эта упрощённая модель позволяет игроку предотвратить атаку врага, снизив его жизнь до нуля.

Чтобы увеличить сложность, добавлена сложность прицеливания в маленьких врагов, которые остаются на дальнем расстоянии, а боеприпас через какое-то время требует перезарядки.

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

Смерть и перезапуск

Когда жизнь игрока снижается до нуля, бОльшая часть его действий приостанавливается и появляется экран конца игры.

Этот экран рендерится с помощью ещё одного шейдера освещения. К цвету применён эффект негатива, чтобы подчеркнуть нанесение урона.

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

Сдвигание вниз — это простое смещение шейдера освещения, в который добавлены другие сообщения, например, рекорды (high score) и перезапуск игры.

Очки должны отрисовывается с помощью пикселей шрифтом очень низкого разрешения.

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

источник

original

Excel — мощная программа, в которой можно создавать другие программы, поменьше. Даже отдельные функции являют собой, по сути дела, особые программки. Не все они служат скучным целям. Игр, написанных специально для Excel, довольно много. Возможно, игры и не исчезли, а просто их упрятали поглубже. Если вам известно, как запустить в Microsoft Office какую-нибудь игрушку, напишите мне, пожалуйста. Иногда в творческом процессе так хочется кого-нибудь пристрелить или где-нибудь полетать…

Игры inside

В версиях Excel 95-2000 игрушки, придуманные авторами программы, «спрятаны». Например, в Excel 95 нужно проделать следующие шаманские действия.

  1. Создать новую книгу.
  2. Выделить строку gод номером 95.
  3. Нажать клавишу табуляции.
  4. Открыть меню Справка ► 0 программе.
  5. Удерживая одновременно клавиши Ctr, Alt и Shift, щелкнуть на пункте Техническая поддержка.

И запускается «стрелялка», напоминающая комбатс и светлой памяти Doom, только попроще!

В Excel 97 действия для вызова игры такие.

  1. Выполнить команду Сервис ► Параметры и в открывшемся окне на вкладке Общие снять флажок Стиль ссылок R1C1.
  2. Создать таблицу.
  3. Нажать F5 и ввести в появившемся окне кабалистическую надпись Х97:_97.
  4. Нажать Enter.
  5. Выделить строку с номером 97.
  6. Нажать клавишу табуляции, а затем, удерживая Shift и Ctrl, щелкнуть на значке Мастера диаграмм и подождать, пока открывающееся окно не заполнит весь экран.

В результате вы сможете оценить достоинства авиасимулятора, придуманного и разработанного программистами Microsoft.

В Excel 2000 процедура запуска игры усложнена. Нужно выполнить такие действия.

  1. Создать новую книгу.
  2. Сохранить ее в формате веб-страницы (Сохранить как Web-страницу), установив флажки выделенное: Лист и Добавить интерактивность.
  3. Открыть созданную страницу в Internet Explorer версии не ниже 5.0.
  4. Выделить строку 2000.
  5. Клавишей табуляции перевести выделение на ячейку WC 2000.
  6. Одновременно нажать клавиши Ctrl, Alt и Shift, расположенные на клавиатуре слева, и щелкнуть в левом верхнем углу внедренного в веб-страницу листа Excel на эмблеме Office.

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

После 2000 года руководство компании Microsoft, видимо, узнало, чем занимаются программисты вместо того, чтобы улучшать интерфейс и повышать надежность программных продуктов. Или еще что-то случилось. Во всяком случае, начиная с Office ХР «встроенные» игры из Excel исчезли. А заодно и из Word, где была, например, неплохая вариация на тему игры Pinball.

Игры-макросы

В Excel (и вообще в любой программе Microsoft Office) есть возможность написать мини-приложение на языке программирования VBA (Visual Basic for Applications). Обычно на нем пишут какие-нибудь полезные вещи — сложные расчеты, поиск объектов по определенному признаку, хитрое форматирование данных. Но никто не запрещает и игру написать.

А хоть бы и запрещали! В Интернете полно игр, написанных для Excel. Не буду даже советовать конкретные сайты. Достаточно зайти на поисковый сервер (например, http://www.google.com или http://www.yandex.ru) и в строке поиска написать Excel игра или, если хотя бы чуть-чуть читаете по-английски, Excel game. Увидите множество ресурсов, где есть подходящие игрушки. Правда, для их запуска нужно немного изменить настройки программы.

Давайте я вам расскажу, как установить какую-нибудь игру, а заодно и передохну на совершенно законном основании. Для тестирования я выбрал старый добрый «Тетрис». Ностальгия, знаете ли, замучила: молодость, лаборатория нелинейной спектроскопии, поляризация лазера на красителях, расчет эксперимента на ЭВМ «Мазовия», а в перерывах… М-да… Молодость ушла, а «Тетрис» жив и постоянно появляется в самых неожиданных формах: например в виде игрушки для Excel. Файл игры я скачал с одного популярного интернет-портала. Это обычный документ Excel под названием Tetris.xls. Открыл его… и туг же обнаружил многозначительное предупреждение.

Ни в коем случае не разрешайте выполнение неизвестных макросов, если не уверены в их безвредности! Я бы ни за что не стал этого делать, но надо же вас научить играть в «Тетрис»!

Это очень важное предупреждение. Давайте с ним разберемся, прежде чем пойти дальше. Как я уже писал, игры — это мини-программы (макросы), написанные на языке VBA. Это не очень «навороченный* язык, по всякого рода вредители навострились писать вирусы и на нем.

Поэтому в Excel 2007-2013 по умолчанию выполнение всех макросов запрещено. Как известно, воздержание — единственный надежный метод предохранения. Поэтому, увидев такое предупреждение в незнакомом файле, который вы получили неизвестно от кого, лучше сразу закройте его и займитесь чем-нибудь другим. В данном случае я трижды плюнул через левое плечо, помолился лицензионному антивирусу, который стережет мой компьютер, и не стал закрывать файл. Более того, я нажал кнопку Параметры и увидел окно настроек.

Тут я еще раз поплевал через плечо и установил переключатель в положение Включить это содержимое. И нажал ОК. С этой секунды все макросы, записанные в файле Tetris.xls, перешли в активное состояние. При внимательном рассмотрении файл с игрой «Тетрис» оказался очень простым. Кроме данных об авторе, на листе оказались две кнопки — Запуск и Выход, а также список уровней сложности, от первого до пятого. Я, естественно, начал с самого сложного, пятого, и погрузился в игру.

Выяснилось, что руки до сих пор помнят клавиши управления игрой: на цифровой клавиатуре стрелки ← и → сдвигают фигуру соответственно влево и вправо; стрелка ↑ поворачивает фигуру вокруг своей оси; стрелка ↓ ускоряет движение вниз. Мышечная память оказалась очень кстати, потому что в самом файле об управлении игрой — ни слова.

Можно ли играть в игру в Excel?

Игры с Excel существуют уже давно, но, что более важно, все знают, что Excel — отличный инструмент для анализа данных. В игры Excel можно играть с использованием флэш-памяти или макросов. Из-за этого вам иногда может понадобиться активировать макросы, чтобы повеселиться с Excel.

Как я могу играть во флеш-игры в Excel?

Инструкции о том, как вставить флеш-игру в электронную таблицу Excel. Вы можете играть во флеш-игру бесплатно онлайн или использовать ту, которая у вас уже есть… Excel должен быть открыт, а затем должна быть выбрана кнопка выбора в верхнем левом углу. Чтобы отобразить вкладку разработчика, нажмите кнопку на ленте. Нажмите кнопку «Вставить», пока вы находитесь на вкладке «Разработчики». Создайте в электронной таблице раздел, идентичный по размеру окну, в котором вы сейчас работаете.

Можно ли анимировать в Excel?

Excel также предоставляет вам несколько встроенных анимаций, которые вы можете использовать в своих презентациях. Чтобы получить к ним доступ, выберите вкладку «Вставка», а затем щелкните раскрывающееся меню с надписью «Анимация». В этом разделе вы найдете широкий выбор анимаций, которые вы можете использовать для анимации элементов в своей книге, включая текстовые поля, фигуры и диаграммы, среди прочего.

В Excel скрыта игра?

В Microsoft Excel была спрятана мини-игра в стиле Doom, известная как «Зал замученных душ». Игра состояла из серии комнат, в которых были изображены имена и лица создателей программы.

играть в дум в Excel, Можете ли вы играть в игру в Excel?, Как мне запрограммировать игру в Excel?, Как я могу играть во флеш-игры в Excel?, Вы можете анимировать в Excel?, Есть ли скрытая игра в Excel?

играть в дум в экселе

Что самое сумасшедшее, что вы можете сделать с Excel?

Ниже приведены некоторые из наиболее инновационных способов использования Excel для создания интересных и занимательных проектов. Удивительное искусство AutoShape… Решатель и генератор судоку… Удивительное искусство AutoShape Включены клон тетриса, планетарная модель, традиционная головоломка со слайдами, рабочий симулятор полета и традиционная головоломка со слайдами.

У Excel все еще есть пасхальные яйца?

Пасхальные яйца Excel В рамках инициативы компании «Надежные вычисления» Microsoft официально прекратила практику включения пасхальных яиц в свои продукты в 2002 году.

Как я могу играть в тетрис в Excel?

Тетрис в Microsoft Excel Шаг 1: Включите макросы. Сначала откройте файл Excel, а затем выполните следующие действия, чтобы включить макросы: … Следующий шаг — элементы управления. Клавиатуры служат основой для элементов управления, и они уже настроены… Шаг 3: Ведение счета Количество завершенных строк определяет ваш счет. Шаг 4: Готово! Всплывающее сообщение будет появляться всякий раз, когда игра окончена.

Какие забавные вещи вы можете делать с Excel?

Вы можете попробовать одну из этих 15 творческих идей проекта Excel: Проект для записи и анализа посещаемости… Мониторинг ежедневных расходов… Список дел. … Потрясающее произведение искусства, которое было создано… Разработка игры в Excel. … Создание головоломок судоку. … Создание веб-игр. … Создание 3D маятника.

играть в дум в Excel, Что самое сумасшедшее, что вы можете сделать с Excel?, В Excel все еще есть пасхальные яйца?, Как мне воспроизвести видео в Excel?, Как вы играете в 2048 в Excel?, Как я могу играть в тетрис на Excel?, Как вы играете в 2048 в Excel?, Что интересного вы можете делать с Excel?

играть в дум в экселе

Какие забавные вещи вы можете делать с Excel?

Вы можете попробовать одну из этих 15 творческих идей проекта Excel: Проект для записи и анализа посещаемости… Мониторинг ежедневных расходов… Список дел. … Потрясающее произведение искусства, которое было создано… Разработка игры в Excel. … Создание головоломок судоку. … Создание веб-игр. … Создание 3D маятника.

Какие забавные вещи вы можете делать с Excel?

Вы можете попробовать одну из этих 15 творческих идей проекта Excel: Проект для записи и анализа посещаемости… Мониторинг ежедневных расходов… Список дел. … Потрясающее произведение искусства, которое было создано… Разработка игры в Excel. … Создание головоломок судоку. … Создание веб-игр. … Создание 3D маятника.

Программисту было скучно на работе и он написал игру подобную Doom на собственном трехмерном движке. Как сообщает автор, движок основан на стандартных макросах Excel. Игра может работать даже без использования встроенной в Office среды программирования VBA.

В аннотации автор рассказал, что используя только формулы в Excel, имитация Doom поддерживает  следующий функциональные возможности:
— бесконечная генерируемая карта лабиринта
— рендеринг трассировки лучей в реальном времени
— обработка затемнений
— базовый рендеринг
— движок реалистичного перемещения

Подпишитесь на наш канал в Телеграме, чтобы читать только интересные новости высоких технологий

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

На самый важный вопрос «Зачем?» автор отвечает:

Электронные таблицы — это мощный инструмент, который каждый должен научиться использовать практически для любых бизнес-задач.
Тем не менее, когда большинство людей решают большинство сложных задач, они хотят использовать язык VBA, даже не зная, почему.
И как только они начали изучать это, они пытаются использовать это для любой проблемы, даже простого поиска или рендеринга.

Пользователь под ником C Bel сделал собственный 3D-движок без использования макросов и VBA. C Bel был вдохновлен коридорами игры Doom, что и послужило на создание такого проекта, а ни как не отсутствием личной жизни…

Итак, что может данный 3D-движок:

  1. Создание бесконечных процедурно-генерируемых карт в виде лабиринта;
  2. В режиме реального времени возможно рассчитывание трассировка световых лучей;
  3. Просчет затемнения;
  4. Вычисление самых простых источники света.

Ниже вы можете скачать как обычную, так и HD-версию движка.

  • Ваши Достижения 🔥
  • История посещений
  • Ваши заметки 🗒️
  • Главная
  • Каталог Статей
  • Игровые статьи

DOOM в MS Excel – ЗАЧЕМ и КАК?

Культовый шутер от id Software запускали и на карманных приставках, и на калькуляторах, и на стиральных машинках, но сделать его в Microsoft Excel – это мощно, да. Впрочем, название очевидно кликбейтное. В творении пользователя C Bel от DOOM по сути лишь название файла и базовый концепт. Но от этого достижение товарища не становится менее значимым. И сейчас я отвечу на два хтонических, как лобковый волос мамонта, вопроса – КАК и ЗАЧЕМ он это сделал.

DOOM в MS Excel

С ЗАЧЕМ разобраться довольно просто. C Bel является, помимо разработчика игр, ещё и учителем Excel, и данным проектом он хотел показать, что даже в самых сложных задачах можно обойтись исключительно стандартными математическими формулами. Ведь в качестве альтернативы формулам обычно используется язык VBA, он же – Visual Basic for Application.

И в то время, как формулы Excel – это инструменты с довольно ограниченной областью применения, на VBA можно написать почти всё, что угодно. Хоть это и упрощённый, но всё же язык программирования. Целью C Bel было показать, НАСКОЛЬКО СИЛЬНО люди недооценивают возможность формул и почему им не стоит сорвя голову бежать изучать VBA, как только на горизонте замаячит задача посложнее расчёта, скажем, годовых затрат. И лично я считаю, что у него получилось.

Теперь вопрос – КАК? Поскольку C Bel владеет формулами Excel на уровне чёрной магии Дэвида Блэйна, я даже пытаться не буду понять, насколько он велик. Или велик. Или самокат. Или даже гироскутер – мы ж тут современные люди, правда? Я сделаю иначе – для начала расскажу, ЧТО именно ему удалось сделать. Итак, при помощи Excel и исключительно математических формул он реализовал:

  • бесконечную процедурно-генерируемую карту
  • трассировку лучей в реальном времени
  • расчёт столкновений
  • рендеринг света
  • расчёт шейдеров
  • и движок перемещения

Будучи разработчиком игр, автор попросту имел представление о том, как создать подобный лабиринт, используя программирование, а доскональное знание формул Excel позволило ему попросту интерпретировать программный код в математические формулы. Это звучит, как трансформер, состоящий из костыля на костыле, но впечатляющий вне всяких мер.

Лучшее время ознакомиться с классикой

У зрителей менее опытных возникнет вопрос – как вообще можно сделать игру настолько сложную, используя только формулы? Без текстур, без полноценного игрового движка, без анимаций и прочего? Расскажу секрет. По сути, при создании игры мы делаем упор либо на использование памяти компьютера, либо на использование ресурсов его процессора и видеокарты. То есть, та же самая текстура может либо храниться на жестком диске устройства, либо создаваться по формулам прямо на лету силами процессора.

Два самых экстримальных примера – No Man’s Sky с тремя гигабайтами на обозримую вселенную внутри игры, и малоизвестная нынче игра kkrieger. Её вы на скриншотах ниже сейчас и видите.

Хотите верьте, хотите нет, но она занимает 96 КИЛОБАЙТ. Кило-БАЙТ. На жестком диске. Меньше, чем картинка, которая стоит у вас на аватарке в фейсбуке. Это впечатляет, и лично меня впечатляет не меньше, чем без пяти минут DOOM в Microsoft Excel.

Комментарии:

Игры с Office

Пакет программ Microsoft Office в России известен каждому. В понятие «компьютерной грамотности» обязательно входят основы работы с ним, а уж для поступающих на работу секретарш необходимость знания по меньшей мере Word’а и Excel’а даже не обсуждается. Во многом такая популярность вызвана бесплатным распространением Microsoft Office среди российских пользователей благодаря деятельности компьютерных пиратов, однако все же не стоит отрицать, что этот пакет программ сделан действительно качественно. Его последние версии дают пользователям столь богатый набор возможностей при работе с офисными документами — текстами, слайдами, электронными таблицами, что применение сторонних программ для их обработки требуется крайне редко.
Однако помимо привычных функций форматирования текста, проверки орфографии, работы с рисунками и слайдами в Microsoft Office есть еще и встроенные игры. Разумеется, они встроены туда неофициально – это, скорее, развлечение разрабатывавших Office программистов. Имеются эти игры во всех версиях Office, начиная с 95-го.
Поскольку игры «неофициальные», то, естественно, кнопок на стандартных панелях инструментов или клавиатурных команд, их вызывающих, в Microsoft Office не найти. Для запуска игр служат определенные последовательности действий, выполнить которые случайно практически невозможно. Как же они стали известными? Да очень просто — со слов тех, кто эти игры и писал. Сами разработчики Microsoft и поделились с общественностью секретами своих детищ, прежде всего потому, что в каждой из игр обязательно присутствует их список в качестве детали интерфейса. К сожалению, в современном капиталистическом мире зачастую права собственности на произведенный товар принадлежат не тому, кто его непосредственно сделал, а совсем другим лицам, поэтому имена разработчиков программного продукта обычно отсутствуют в его документации, а разработчики тоже люди и тоже хотят хотя бы мало-мальской известности. Кроме того, возможно, «игры из недр Office» скрашивали программистам из Microsoft долгие часы кропотливой работы по созданию кода.
Вот перечень известных сетевой общественности на настоящее время «игр» из недр Microsoft Office. Больше всего игр спрятано в различных версиях Excel’а, — похоже, разработчики этого компонента Office раньше работали в какой-нибудь компании, производившей именно игры.

Doom в Excel 95
В Excel 95 есть встроенный мини-Doom. Для его вызова надо сделать следующее:
1. Открыть Excel 95 c чистой книгой.
2. Прокрутить лист (мышью или клавишами) до строки с номером 95.
3. Выделить всю 95-ю строку, кликнув мышью на номере строки в служебной колонке слева.
4. Нажать клавишу Tab.
5. Открыть меню «Help — About Microsoft Excel» (в англоязычных версиях) или «? — О программе» (в русской версии).
6. Удерживая одновременно клавиши Ctrl, Alt и Shift, кликнуть мышью на кнопке «Technical Support» («Техническая поддержка»).
После этого откроется небольшое окно, в котором и запустится игра. Передвигаться по залу (он называется «Hall of Tortured Souls» — «Зал Измученных Душ», наверное, назван так из-за творческих мук программистов, создавших Excel) можно с помощью курсорных клавиш. Поднявшись по лестнице, проход на которую виден в конце зала, можно прочитать имена разработчиков Excel’а, бегущие на вделанном в стену экране.
Если, находясь в «Зале Измученных Душ» ввести (без кавычек) с клавиатуры слово «excelkfa» (любители Doom’а наверняка сразу вспомнят другую знакомую комбинацию), то стена, противоположная той, в которой находится вход на лестницу, упадет, и взгляду предстанет дорога над пропастью. Пройдя по ней (это нелегко), можно дойти до стены, оклеенной фотографиями разработчиков Excel’а.
Descent из Excel 97
(Descent — это довольно известная игра-симулятор космического корабля, перемещающегося в инопланетных шахтах. К настоящему времени выпущено уже три ее версии.)
В Excel 97 встроена «леталка»: игра, смысл которой заключается в полете над местностью и просмотре открывающихся красот. Вот как ее можно запустить.
1. Запустите Excel 97 и создайте чистую таблицу.
2. Нажмите F5 и введите в строке ссылки для перемещения фразу «x97:l97» (т.е. переход к ячейкам от X97 до L97 с их выделением). Нажмите Ввод.
(Если перемещения не происходит, то посмотрите, стоит ли в диалоговом окне «Сервис — Параметры» на вкладке «Общие» отметка в пункте «Стиль ссылок R1C1». Если стоит, то либо снимите ее, либо в качестве адреса для перемещения вводите строку «r97c12:r97c24».)
3. Вы перейдете к строке номер 97. Нажмите Tab, а затем, удерживая Shift и Ctrl, щелкните левой кнопкой мыши по иконке «Мастера диаграмм». Подождите немного, пока открывающееся окно не распахнется на весь экран.
Вот вы и в Excel Descent! Все управление — мышью. Левая кнопка — ускорение вперед, правая — назад, движения мыши задают направление. Выход из игры — Esc. Местность замкнута: если лететь в каком-либо направлении, то в конце концов прилетишь туда же, откуда начал полет. К сожалению, «посадка» в игре не отработана: через возвышенности можно спокойно пролетать насквозь. Встречаются весьма привлекательные ландшафты, например, некое подобие моря с колышущимися волнами.
Подлетев к центру местности, можно увидеть камень на высоком постаменте. На поверхности камня последовательно проплывают имена разработчиков Excel 97.

Pinball в Word 97
Игра, встроенная в Word 97, довольно проста и в правилах, и в оформлении. Это всего лишь Пинболл — игра, задачей которой является удержание на наклонном поле катающегося по этому самому полю шарика с помощью ударов двух приделанных в нижней точке поля лопаточек. Для ее вызова запустите Word 97, создайте в нем новый пустой документ и напечатайте в нем слово «Blue» (без кавычек). Выделите это слово (мышью или курсором с удержанием клавиши Shift), вызовите диалог установки свойств шрифта («Формат — Шрифт») и задайте выделенному фрагменту полужирное начертание шрифта и синий цвет (в англоязычной версии Word соответственно «Bold» и «Blue»). После этого поставьте курсор в конец слова «Blue» и напечатайте после него один пробел. Теперь вызовите пункт меню «О программе» («? — О программе», в англоязычной версии — «Help — About») и, удерживая клавиши Ctrl и Shift, кликните левой кнопкой мыши на иконке Word’а в иллюстрации в левой части появившегося окна.
В появившейся на экране игре управление осуществляется всего двумя клавишами: «Z» — удар левой лопаточкой, «М» — удар правой лопаточкой. Ну, и еще есть клавиша «Esc» для выхода.
В правой части окна игры медленно проплывает список разработчиков Word’а.

Автогонки в Excel 2000
Если в Microsoft Excel 97 имеется встроенная игра-«леталка», то в следующей версии этой программы работы с электронными таблицами присутствуют даже настоящие автогонки.
Для выхода на трассу запустите Excel 2000 и создайте новую книгу с помощью команды «Создать» из меню «Файл». Затем сохраните эту книгу как web-страницу с помощью соответствующей команды (т.е. «Сохранить как Web-страницу») того же меню, при этом в диалоговом окне сохранения установите в разделе «Сохранить» отметку в пункте «выделенное: Лист» и поставьте галочку в пункте «Добавить интерактивность». Откройте полученную страницу в браузере Microsoft Internet Explorer (версии не ниже 5.0, впрочем, последняя автоматически устанавливается при установке Microsoft Office 2000), во внедренном в нее листе Excel перейдите с помощью клавиши PageDown к строке 2000, а с помощью линейки горизонтальной прокрутки — к столбцу WC. Выделите строку 2000 (просто нажав мышью на ее номер в указателе номеров строк слева листа) и с помощью клавиши Tab переведите выделение на ячейку WC2000. После этого, нажав одновременно левые клавиши Ctrl, Alt и Shift, кликните левой кнопкой мыши на эмблеме Office в левом верхнем углу внедренного в web-страницу листа Excel. Вот вы и на трассе.
Ехать вперед — клавиша «стрелка вверх», тормозить — «стрелка вниз», поворачивать — соответственно стрелки вправо и влево. Включить фары — клавиша «о» (латинская), пробел — стрелять и уничтожать машины соперников. Соприкосновение с обочиной означает аварию автомобиля (рис.10). На трассе чередуются ночь и день, — ночью освещение дороги дают только фары. На асфальте написаны имена разработчиков Excel’а. Какой-либо конечной цели игры нет, — смысл ее в простом движении автомобиля.
Поскольку игра базируется не только на Excel’е, но и на средствах сопряжения этой программы с web-страницей, в том случае, если игра у вас не запускается, проследите, чтобы на компьютере были установлены Microsoft Web Components (компонент Office 2000) и в том случае, если они отсутствуют, установите их из дистрибутива Office.
К сожалению, в Excel XP ни автогонки, ни «леталка» не присутствуют. Однако наверняка в скором времени можно будет услышать, как в этой программе запустить какую-нибудь Free Space или еще что почище…
* * *
Думаю, теперь вам ясно, почему программы от Microsoft имеют такой большой обьем. Ведь в них помимо собственно тех функций, ради которых они и приобретаются, есть еще и множество скрытых возможностей. Впрочем, иной раз эти открывающиеся с помощью волшебной последовательности действий возможности могут скрасить нудную работу или помочь отдохнуть. Ведь для того, чтобы поиграть в автогонки, Pinball или «леталку», вам не потребуется ничего, кроме соответствующей версии Excel’а или Word’а.

Макро-игры
Описанными выше играми «из недр Office» отнюдь не исчерпываются все игровые возможности этого пакета программ. Дело в том, что в Microsoft Office встроен еще и язык программирования Visual Basic for Applications, используя который, можно научить Office выполнять практически любые задачи. Ну, и игры тоже.
На настоящее время различными разработчиками написано немало игр на Visual Basic for Applications. Практически все они доступны из Библиотеки Microsoft Office Extensions, о которой рассказано на одной из врезок. Расположена эта Библиотека на сайте Microsoft по адресу http://www.microsoft.ru/offext, а игры размещены в ее разделе Entertaiment, по адресу http://www.microsoft.ru/offext/e.asp.
Количество игровых разработок в Библиотеке достигает нескольких десятков. Большинство из них представляют собой клоны известных игр, просто переписанные на Visual Basic for Applications с целью найти красивое решение этой задачи, дать возможность пользователю отдохнуть, не закрывая программ Office или просто победить в конкурсе Microsoft Office Extensions. Например, цель игры Amazing Blocks Владимира Трегубова заключается в сборе из падающих сверху комбинаций кубиков линий одного цвета (длиной 3 кубика и более), — некий аналог Tetris’а (кстати, полный аналог классического Tetris’а в Библиотеке разработок тоже есть). «Подкидной Дурак» Александра Соловьева по интерфейсу практически неотличим от своего аналога для Windows. Весь интерфейс обоих программ сделан на базе встроенных средств Office, — на Visual Basic for Applications, а исходный код открыт для просмотра и изучения, что позволяет использовать игры для Office не только для развлечения, но и с целью обучения программированию.
Есть и оригинальные разработки, например, «Экселенок в стране Экселяндии» Владимира Трегубова, программа для обучения работе с Excel в развлекательном стиле (увы, работает только в английской версии Excel 2000). В Библиотеке Microsoft Office Extensions можно найти и программы для Office, которые, не являясь играми, могут помочь приятно провести время или даже вести домашнюю бухгалтерию, например, «Atled Bodybuilding» Владимира Евланова (программа для расчета рациона питания), «MyMoney» Владимира Грицины (база данных Access для подсчета семейного бюджета). Имеются даже программы для проведения психологического тестирования. И все это реализовано на встроенном в Office языке программирования, освоить который, кстати, может любой желающий.
* * *
Как видно из всего вышеизложенного, Microsoft Office может использоваться не только по своему прямому назначению. Всевозможные игры могут быть реализованы на его встроенном языке VBA, а некоторые игровые программы даже и входят в состав Office, хотя и неофициально. Последнее, впрочем, может вызывать справедливые нарекания пользователей, вынужденных из-за этих тайновстроенных компонентов отводить под Office больше дискового пространства, чем пришлось бы отвести без них, но, наверное, стоит простить программистам Microsoft эту их маленькую слабость… Тем более что благодаря встроенным в Office играм можно в какой-то степени прослыть «гуру» среди начинающих пользователей компьютера, несколькими магическими пассами вызвав на экран «Зал Измученных Душ» или «Автогонки».
Библиотека макросов
В вышедший в 1997 году пакет программ Microsoft Office 97 был включен язык программирования Visual Basic for Applications, программы на котором работали в среде Office. Очень скоро стали появляться первые разработки на этом языке. В связи с этим компания Microsoft создала специальный сайт для таких разработок — Библиотеку Microsoft Office Extensions, расположенную по адресу http://www.microsoft.ru/offext. К настоящему времени количество программ в Библиотеке составляет несколько сотен, и среди них можно найти программу практически для любой задачи, которая только может встать перед пользователем Office. Основная часть Библиотеки занята под дополнения, необходимые при ведении бухгалтерии и управлении предприятием, однако и не связанные с бизнесом пользователи не пожалеют, что ее посетили, — хотя бы из-за содержимого раздела Entertaiment, о котором рассказывается в статье.
Стоит сразу предупредить, что загрузка файлов из Библиотеки Microsoft Office Extensions возможна только при использовании Microsoft Passport, аккаунта на специальном предназначенном для учета пользователей Microsoft’овском сервере. Однако в качестве Microsoft Passport может выступать и простой бесплатный почтовый ящик на сайте www.hotmail.com, так что перед визитом в Библиотеку посетите этот сервер и создайте себе там новый почтовый адрес, если раньше его не имели. На сам ящик никакой информации поступать не будет, — для работы с Библиотекой нужны лишь логин и пароль от аккаунта на Hotmail’е.
Среди разработок, поступивших в Библиотеку Microsoft Office Extensions за каждые полгода, проводится конкурс. Авторы программ, победивших в конкурсе, помимо удостоверяющих этот факт сертификатов получают вполне реальные призы: за первое место — карманный компьютер, за одно из трех вторых — лицензионную версию Microsoft Office XP Developer Edition, и за одно из пяти третьих — оптическую мышь. Критерии оценки разработок и условия получения призов представлены на сайте Библиотеки. Кроме того, специальные призовые места присуждаются за разработки, использующие новейшие технологии от Microsoft (например, на основе Smart-Tag’ов, появившихся в OfficeXP).
Фактически конкурс Microsoft Office Extensions на настоящее время является единственным местом в Сети, где разработчики бесплатных программ (коммерческие версии принимаются в Библиотеку, но в конкурсе не участвуют) могут получить достойное вознаграждение за свой труд.
«Пасхальные яйца»
Особенности различных программ, наподобие перечисленных в статье «игр из недр Office», обычно называются «пасхальными яйцами», — скрытыми функциями, встраиваемыми в программу ее разработчиками для прославления своих имен или просто для развлечения. Разумеется, они есть не только в компонентах Microsoft Office: так, многим известно весьма особенное отображение 4-й и 5-й версиями Internet Explorer’а web-страницы, состоящей всего лишь из строчки «

» или интересные сведения, отображаемые Netscape Navigator’ом при вводе в строку адреса фраз «about:authors», «about:mozilla», или окно со списком имен, выскакивающее в PowerPoint 95 при щелчке левой кнопкой мыши на логотипе программы в окне «? — О программе»….
На Интернет-сайтах, посвященных программному обеспечению, информация о таких «пасхальных яйцах» встречается довольно часто. Есть даже специальные сайты, посвященные только им, — например, www.eeggs.com. Кроме раздела, посвященного программам, на нем еще рассказано и о всевозможных несуразицах в голливудских кинофильмах. Сайт пополняется благодаря деятельности посетителей (там можно и прокомментировать тот или иной рассказ о «пасхальном яйце», разумеется, на английском языке), так что, обнаружив новую скрытую возможность какой-нибудь программы, вы можете поделиться информацией о ней с сетевой общественностью.

MS Excel – табличный процессор очень здорово выручает при выполнении широкого круга задач, от решения транспортных задач, или нахождения корней полиномов до фильтрации данных и моделирования экономических ситуаций, с помощью Excel можно даже писать программные решения. Но, если можно писать программы, то может можно и игры, ведь, по сути, игра – это та же программа. Абсолютно верное предположение, представляем Вашему вниманию шесть игр, написанных в Excel.

Чтобы запустить игру, необходимо наличие табличного процессора Excel, а также нужно разрешить выполнение макросов.

2048.

Первая игра с незамысловатым названием 2048.

Суть игры заключается в том, чтобы собрать один квадрат с числом 2048, до того, как на поле закончатся пустые клетки, двигая поле в одном из четырех направлений за один ход, если рядом находятся квадраты с одинаковым числом, они сливаются. За каждый ход пользователя на поле появляется дополнительная клетка с минимальным числом «2». Игра очень затягивает, поэтому хорошенько подумайте, прежде чем запустить.

Ссылка, по которой можно закачать книгу excel с игрой.

Но это еще не все, если игра Вам пришлась по вкусу, но вы боитесь быть пойманным, все-таки, хоть игра и находится в среде Excel, объяснить, что это полезно по работе будет достаточно сложно, особенно в режиме 3D, поэтому есть версия, замаскированная под финансовый отчет.

Правила те же, только все действо осуществляется на поле G8:J12. Скачать замаскированную версию можно по ссылке.

Candy Number Crunch Saga.

Здесь вы можете почувствовать себя трейдером на бирже прямо из книги Excel. Скрытой версии нет, но если удалить цветастые буквы, то можно притворится, что документ относится к работе (конечно, если вы не на стройке разгружаете кирпичи, а то вообще странно будет выглядеть).

Ссылка на файл Excel.

Монополия.

Эта игра не нуждается в представлении, теперь для того, чтобы в нее играть Вам нужен только Excel.

Ссылка на файл Excel.

3D лабиринт.

maze1

Трехмерным его можно назвать условно, но выглядит впечатляюще, интересно что дальше? Портирование DOOM в Excel? Не исключено.

Arena.Xlsm

Ролевая игра, выполненная в Excel, включает 2000 всевозможных противников, 1000 вариантов комбинации различных вещей, 31 заклинание и 4 концовки.

Скачать Arena.Xlsm можно по ссылке.

— Advertisement —

На носу Doom Eternal, продолжение успешного ремейка оригинальной Doom. В честь скорого выпуска, давайте окунемся в прош… подождите, никакого прошлого! Doom и сейчас актуален, но не с точки зрения графических решений, а с точки зрения того, что в него можно поиграть на чем угодно! Самые неадекватные устройства мы сегодня и рассмотрим.

1. Фотоаппарат

Да не просто фотоаппарат, а устройство аж 90-ых годов выпуска! Сами понимаете, недостижимая игрушка тех лет Kodak DC260 имела при себе вполне себе живой компьютер, что и позволило запустить на ней игру, адаптировав управление на встроенные кнопки управления, а также на затвор, изменение резкости и других управляющих устройств фотоаппарата

2. Клавиша на клавиатуре

Еще одно странное устройство, выпущенные студией Артемия Лебедева в 2008 году под названием Optimus Maximus. По факту, это клавиатура, имеющая на каждой клавиша мини дисплей. Ну нам и этого достаточно! Воспроизведя игру на компьютере и настроив быструю передачу скриншотов на клавишу удалось добиться более менее адекватной картинки, позволивший поиграть в Дум на клавиатуре. Задача была, конечно, не из легких.

3. Кассовый аппарат

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

4. Банкомат

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

5. Терминал оплаты

Ну тут совсем все просто, но тем не менее забавно. Российская компания Qiwi решила провести небольшой эксперимент со своими терминалами, сделав скрытую возможность запустить флэш версию Дума и поиграть в неё прямо с терминала. Для доступа, необходимо было вбить в строку поиска IDDQD (код на бессмертие в оригинальной игре)

6. Калькулятор

И тут его тоже смогли запустить. Причем с начала в черно-белом варианте, использовав модель TI-Nspire, воссоздав его полностью на мощностях калькулятора, а затем еще в цветном виде TI-Nspire CX.

7. Бензопила

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

8. Осциллограф

На самом деле тут больше ухищрения в установке виндовс 95 на осциллограф, нежели заставить запуститься там Дум. Тем не менее, на настоящем осциллографе тоже можно попробовать, ведь в свое время такое проворачивали с Quake

9. Принтер

А вот тут уже серьезный подход. Хакеры взломали Canon Pixima и на имеющихся мощностях принтера запустили Дум. И это был именно взлом. Хакеры наглядно продемонстрировали, что даже принтер, через взлом прошивки, может стать серьезной угрозе предприятию. Но речь не об этом.

10. Doom внутри Doom

Ну и венцом оригинальности, где можно поиграть в Дум является… сам Дум. Моддер модифицировал файлы игры таким образом, что добавил в игру игровой автомат, в который можно поиграть в Дум. Оригинально, ничего не скажешь

3D-движок, написанный на формулах MS Excel

Эта статья посвящена тому, как я смог написать 3D-движок игры Doom только на формулах Excel. Я реализовал следующий функционал:

  • бесконечная процедурно генерируемая карта лабиринта
  • рендеринг трассировкой лучей в реальном времени
  • вычисление окклюзии
  • рендеринг простейшего освещения
  • шейдер освещения и вычислений
  • движок естественного движения
  • в 3D-движке не используются макросы

* чтобы управлять игрой нажатием клавиш, нужны макросы, управляющие движением с помощью одной простой инструкции копирования.

Можете скачать файл и протестировать его самостоятельно!

Файлы

Учитель информатики однажды сказал нам: «любые вычисления можно выполнить в любом языке программирования, даже через формулы электронной таблицы».

Поначалу, какой бы мудрой ни казалась эта фраза, упоминание в этом списке Excel выглядело глупо…

Затем, после изучения машины Тьюринга, фраза стала для нас полностью верной, хотя и не вполне реализуемой.

Получив многолетний опыт работы с Excel, мы уже поняли, что единственное ограничение формулы Excel — недостаток способов ввода-вывода.

Но множество задач, решаемых исключительно формулами, по-прежнему выглядит впечатляюще.

Как бы то ни было, эта работа — не просто какое-то хвастовство… У меня были для неё серьёзные причины.

Электронные таблицы — это мощный инструмент, которому должен научиться каждый, ведь его можно использовать почти в любых деловых задачах.

Однако когда большинство людей доходят до решения более сложных задач, они стремятся использовать язык VBA, даже не понимая толком, зачем.

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

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

При использовании в бизнесе формулы обладают следующими преимуществами перед макросами:

  • Их быстрее писать для любого человека, если он не профессиональный программист-аналитик
  • Их проще поддерживать любому человеку, а не только профессиональному программисту. (Чаще всего макросы становятся бесполезны после ухода их разработчика.)
  • Гарантированное качество благодаря постоянной проверке значений. (Принудительное применение техники «разработка через тестирование»)
  • Они более эффективны в долговременной перспективе благодаря процессу создания формул в стиле «думай, прежде чем писать».
  • И они совершенно точно гораздо лучше интегрированы в сам инструмент создания электронных таблиц и следуют изначальному паттерну разработки электронных таблиц, в то время как макросы часто оказываются специфическими конструкциями, требующими в дальнейшем активной поддержки.

Примечание: эти пункты в основном относятся к процедурам, используемым как макросы; дополнительная функция, написанная на VBA, может увеличить эффективность, не снижая качества.

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

Если конкретнее, то я нашёл всего два случая, когда потребовался VBA:

  • Добавление специфического ввода или вывода (как я сделал здесь для получения событий клавиш), потому что формула всегда ограничена изменениями в самой ячейке
  • Некоторые сложные задачи (например, оптимизация), в которых вычисления занимают слишком много времени и/или пространства. Но такие задачи довольно редки в реальной жизни.

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

Моя электронная таблица должна была стать игрой в стиле Doom в лабиринте.

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

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

Для создания случайно генерируемой карты нам нужно быть последовательными, поэтому функцию rand() использовать нельзя, ведь мы не можем контролировать начальное состояние (seed) генератора случайных чисел.

Начальные состояния генератора случайных чисел должны быть позициями (x;y) на карте, чтобы мы могли получать разные значения для каждой позиции, и мы не можем получить результат предыдущего случайного числа как начальное состояние для следующего, или нам придётся хранить всю карту с самого начала.

Обычные хэш-функции, несмотря на обеспечение высокого качества случайных чисел, оказались слишком затратными, поэтому мне нужно было найти другое решение.

Эксперименты с фрактальным генератором тоже оказались довольно затратными и давали интересные результаты только для небольшой части карты.

Тогда я обнаружил метод средних квадратов (middle-square method), который на самом деле не очень «случаен», потому что в нём используются последовательные начальные состояния. Но он подсказал мне идею того, что можно брать десятичную часть любого другого вычисления.

Я выяснил, что если брать десятичные части sin(x)+cos(y), то наконец-то получаются красивые числа без какого-либо прослеживаемого паттерна, а время вычислений при этом на удивление малО.

Для получения десятичных частей математические функции mod() и floor() гораздо более эффективны по сравнению с текстовой функцией подстроки mid().

Я стремился сделать карту похожей на крысиный лабиринт, поэтому создавал блоки не сплошными, чтобы они походили не на пещеры (в стиле Minecraft), а на лабиринт.

То есть нам нужны тонкие стены с двумя возможными стенами для каждого квадрата. Тогда мы сможем брать два блока чисел вместе с тем же случайным значением.

Плотностью размещения стен управляют два параметра.

С учётом этих правил мы можем или отображать лабиринт, или тестировать любую стену с заданной позицией с помощью трассировки лучей.

Стоит заметить, что карта «плоская», без подъёмов и спусков. Можно было добавить рельеф с помощью генератора рельефа (подошёл бы алгоритм Diamond-Square, потому что его можно написать без рекурсивной функции), но весь последующий процесс сильно облегчило бы вырезание отверстий в полу и потолке с дополнительным значением уровня.

Так, похоже, мы в аду

Трассировщик лучей

Трассировщик лучей должен определять для каждого пикселя экрана, какой первой поверхности касается луч, и получать от неё информацию (расстояние, угол падения света, цвет и т.д.).

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

Окклюзия

Первым сложным моментом будет нахождение первого объекта на пути каждого луча.

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

То есть процесс можно упростить до горизонтального «радара» в одном измерении.

Тогда у нас нет иного выбора, кроме как проверять луч на первой вероятной стене, потом на второй вероятной, и так далее, пока мы не найдём нужную.

Определение того, какую стену нужно проверять — это всего лишь тригонометрическая задача.

И поскольку у нас всего два типа стен, мы можем тестировать оба типа, а потом сохранять только ближайшую.

Одно из ограничений Excel заключается в отсутствии условного цикла и для экономии времени можно только пропускать тело цикла. Поэтому нам нужно ограничить максимальное расстояние проверки, считая, что если на этом расстоянии стена не найдена, то её нет.

Пол и потолок

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

Затем для каждого пикселя мы определяем, дальше ли стена, чем потолок или пол, и соответствующим образом задаём цвет пикселя.
Эффективное сравнение реализовано использованием только проекции расстояния до стены и до пола/потолка по оси камеры. Конечное расстояние затем получается с помощью предварительно вычисленного коэффициента расстояния в шейдере расстояний. Постоянные предварительно вычисленные значения нужны для экономии ресурсов.

Освещение

Конечное освещение берётся из шейдера освещения, представляющего собой свет факела, в направлении камеры (и оружия).

Когда поверхность точно горизонтальна к лучу света, также добавляется отражение.

Стена может быть только горизонтальной (если добавить наклон, то он просто смещает окно экрана вверх и вниз, не поворачивая камеру)

Для каждого угла радара мы получаем угол между лучом и ближайшей найденной стеной.

Коэффициент отражения — это просто функция угла.

В конце концов освещение становится результатом функции коэффициента расстояния, потолка/пола или разрешения стен, коэффициента отражения и коэффициента шейдера освещения.

Экран дисплея

Эффективный дисплей реализуется с помощью условного форматирования — градиент цвета зависит от значения ячейки.
Сокрытие значения выполняется форматированием ячейки.

Коллизии со стенами

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

Кроме того, игрок не должен прилипать к стене при контакте с ней. Он должен двигаться, скользя вдоль стены, пока не попадёт в угол.

Также необходимо соблюдать минимальное расстояние между стеной и игроком, чтобы избежать графических проблем и придать стенам толщину.

Оказалось, что довольно сложно обработать все возможные варианты стены и позиций игрока относительно этой стены.

Изучено 2 5 вариантов и к ним привязано три возможных исхода (для каждой оси смещения), чтобы получать результаты за как можно меньшее количество проверок.

Несмотря на то, что это казалось самой короткой частью игры, таблица смещений стала самой сложной в реализации. (В 10 раз больше, чем карта, в два раза больше кода распознавания стен.)

Враги

Привет, красное привидение!

Графический рендеринг

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

Целый отдельный лист посвящён вычислению формы сфер с учётом горизонтального радиуса и вертикальной высоты овоида. Для анимирования существа используется соотношение высоты/ширины.

В рендеринге стен и потолка используется градиент только по одному цвету, однако Excel позволяет использовать два последовательных (не сливающихся) градиента. Поэтому врагов можно отображать другим цветом. Для этого градиента можно использовать диапазон значений ниже 0, при том, что значение 0 — это чёрный цвет.

Меняющуюся прозрачность реализовать оказалось не сложнее, чем плавный рендеринг поверхности сферы. Луч получает толщину сферы, делая пиксель более цветным.

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

Здесь вычисления тоже производятся в горизонтальной плоскости, а максимальный объём вычислений подготавливается перед завершением 3D-вычислений для каждого пикселя.

Поведение врагов

Чтобы избежать реализации сложного и некачественного процедурного поведения, враги не будут реагировать на действия игрока. Их позиция определяется только временем, они движутся по сложной траектории, чтобы паттерн был не таким заметным.

Чтобы позиция, скорость и ускорение были непрерывными (для плавного движения), я сделал траекторию своего рода конечным фракталом большого круга с добавленными к нему небольшими круговыми вариациями. Коэффициент соотношения между кругами (и даже соотношение x/y) случаен и ненатурален, поэтому траектория никогда не самозацикливается. Чтобы получить хороший случайный генератор детерминированных траекторий, я создал отдельный лист, отображающий траекторию.

Так как траектории не могут учитывать стены, я был вынужден оставить монстрам возможность проходить сквозь них.

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

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

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

Атаки врагов

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

Область видимости каждого монстра вычисляется на вкладке радара с учётом расположения стен.

Игрок получает урон, когда он оказывается внутри радиуса врага. Если игрок специально забирается внутрь врага, происходит то же самое.

Это создаёт эффект наносимого игроку урона — простой эффект негативного цвета во весь экран.

Добавлен также ещё один эффект — отмена рендеринга всех остальных врагов при нанесении урона игроку.

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

Атаки игрока

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

Эта упрощённая модель позволяет игроку предотвратить атаку врага, снизив его жизнь до нуля.

Чтобы увеличить сложность, добавлена сложность прицеливания в маленьких врагов, которые остаются на дальнем расстоянии, а боеприпас через какое-то время требует перезарядки.

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

Смерть и перезапуск

Когда жизнь игрока снижается до нуля, бОльшая часть его действий приостанавливается и появляется экран конца игры.

Этот экран рендерится с помощью ещё одного шейдера освещения. К цвету применён эффект негатива, чтобы подчеркнуть нанесение урона.

Очки должны отрисовывается с помощью пикселей шрифтом очень низкого разрешения.

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

Excel — мощная программа, в которой можно создавать другие программы, поменьше. Даже отдельные функции являют собой, по сути дела, особые программки. Не все они служат скучным целям. Игр, написанных специально для Excel, довольно много. Возможно, игры и не исчезли, а просто их упрятали поглубже. Если вам известно, как запустить в Microsoft Office какую-нибудь игрушку, напишите мне, пожалуйста. Иногда в творческом процессе так хочется кого-нибудь пристрелить или где-нибудь полетать…

Игры inside

В версиях Excel 95-2000 игрушки, придуманные авторами программы, «спрятаны». Например, в Excel 95 нужно проделать следующие шаманские действия.

  1. Создать новую книгу.
  2. Выделить строку gод номером 95.
  3. Нажать клавишу табуляции.
  4. Открыть меню Справка ► 0 программе.
  5. Удерживая одновременно клавиши Ctr, Alt и Shift, щелкнуть на пункте Техническая поддержка.

И запускается «стрелялка», напоминающая комбатс и светлой памяти Doom, только попроще!

В Excel 97 действия для вызова игры такие.

  1. Выполнить команду Сервис ► Параметры и в открывшемся окне на вкладке Общие снять флажок Стиль ссылок R1C1.
  2. Создать таблицу.
  3. Нажать F5 и ввести в появившемся окне кабалистическую надпись Х97:_97.
  4. Нажать Enter.
  5. Выделить строку с номером 97.
  6. Нажать клавишу табуляции, а затем, удерживая Shift и Ctrl, щелкнуть на значке Мастера диаграмм и подождать, пока открывающееся окно не заполнит весь экран.

В результате вы сможете оценить достоинства авиасимулятора, придуманного и разработанного программистами Microsoft.

В Excel 2000 процедура запуска игры усложнена. Нужно выполнить такие действия.

  1. Создать новую книгу.
  2. Сохранить ее в формате веб-страницы (Сохранить как Web-страницу), установив флажки выделенное: Лист и Добавить интерактивность.
  3. Открыть созданную страницу в Internet Explorer версии не ниже 5.0.
  4. Выделить строку 2000.
  5. Клавишей табуляции перевести выделение на ячейку WC 2000.
  6. Одновременно нажать клавиши Ctrl, Alt и Shift, расположенные на клавиатуре слева, и щелкнуть в левом верхнем углу внедренного в веб-страницу листа Excel на эмблеме Office.

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

После 2000 года руководство компании Microsoft, видимо, узнало, чем занимаются программисты вместо того, чтобы улучшать интерфейс и повышать надежность программных продуктов. Или еще что-то случилось. Во всяком случае, начиная с Office ХР «встроенные» игры из Excel исчезли. А заодно и из Word, где была, например, неплохая вариация на тему игры Pinball.

Игры-макросы

В Excel (и вообще в любой программе Microsoft Office) есть возможность написать мини-приложение на языке программирования VBA (Visual Basic for Applications). Обычно на нем пишут какие-нибудь полезные вещи — сложные расчеты, поиск объектов по определенному признаку, хитрое форматирование данных. Но никто не запрещает и игру написать.

Давайте я вам расскажу, как установить какую-нибудь игру, а заодно и передохну на совершенно законном основании. Для тестирования я выбрал старый добрый «Тетрис». Ностальгия, знаете ли, замучила: молодость, лаборатория нелинейной спектроскопии, поляризация лазера на красителях, расчет эксперимента на ЭВМ «Мазовия», а в перерывах… М-да… Молодость ушла, а «Тетрис» жив и постоянно появляется в самых неожиданных формах: например в виде игрушки для Excel. Файл игры я скачал с одного популярного интернет-портала. Это обычный документ Excel под названием Tetris.xls. Открыл его… и туг же обнаружил многозначительное предупреждение.

Ни в коем случае не разрешайте выполнение неизвестных макросов, если не уверены в их безвредности! Я бы ни за что не стал этого делать, но надо же вас научить играть в «Тетрис»!

Это очень важное предупреждение. Давайте с ним разберемся, прежде чем пойти дальше. Как я уже писал, игры — это мини-программы (макросы), написанные на языке VBA. Это не очень «навороченный* язык, по всякого рода вредители навострились писать вирусы и на нем.

Поэтому в Excel 2007-2013 по умолчанию выполнение всех макросов запрещено. Как известно, воздержание — единственный надежный метод предохранения. Поэтому, увидев такое предупреждение в незнакомом файле, который вы получили неизвестно от кого, лучше сразу закройте его и займитесь чем-нибудь другим. В данном случае я трижды плюнул через левое плечо, помолился лицензионному антивирусу, который стережет мой компьютер, и не стал закрывать файл. Более того, я нажал кнопку Параметры и увидел окно настроек.

Тут я еще раз поплевал через плечо и установил переключатель в положение Включить это содержимое. И нажал ОК. С этой секунды все макросы, записанные в файле Tetris.xls, перешли в активное состояние. При внимательном рассмотрении файл с игрой «Тетрис» оказался очень простым. Кроме данных об авторе, на листе оказались две кнопки — Запуск и Выход, а также список уровней сложности, от первого до пятого. Я, естественно, начал с самого сложного, пятого, и погрузился в игру.

Выяснилось, что руки до сих пор помнят клавиши управления игрой: на цифровой клавиатуре стрелки ← и → сдвигают фигуру соответственно влево и вправо; стрелка ↑ поворачивает фигуру вокруг своей оси; стрелка ↓ ускоряет движение вниз. Мышечная память оказалась очень кстати, потому что в самом файле об управлении игрой — ни слова.

Пользователь посвященного разработке компьютерных игр веб-сайта Gamasutra написал программное обеспечение для трехмерной игры по мотивам популярного шутера DOOM. Особенность его игрового движка состоит в том, что он создан исключительно с помощью формул MS Excel. Разработка ПО подробно описана в блоге на сайте Gamasutra.

Среди компьютерных игр самыми технологически сложными считаются шутеры от первого лица: разработчикам необходимо создать видимость трехмерного динамичного мира. Это подразумевает не только реалистичный рендеринг, но и использование заранее прописанных алгоритмов, количество которых — в зависимости от сложности игры — может быть очень большим.

Самый простой трехмерный шутер можно написать в MS Excel: с помощью встроенного в программу Visual Basic for Applications (сокращенно VBA). Использование заранее прописанных макросов на основе языка Visual Basic позволяет создавать графические приложения даже непрофессиональным программистам. Однако использование VBA-макросов вовсе необязательно, и трехмерный игровой движок, как оказалось, можно написать с помощью доступных в Excel формул — прямиком в таблице.

Инфраструктура игры представляет собой лабиринт, по которому пользователь свободно перемещается. В игре также есть «враги» — эллипсоидные призраки красного цвета (их также можно атаковать с помощью «оружия» — фиолетового лазера). Для того, чтобы двигаться, координаты точки перемещения придется вбить вручную на специальном листе — после чего вернуться на экран с игрой.

Разработчик также сделал версии игры с макросами: они позволяют перемещаться в игровом пространстве с помощью клавиатуры или нажатия на кнопки на экране. Файлы с игрой и подробными инструкциями также доступны в блоге с описанием создания игры.

В прошлом году разработчики из Технологического института Джорджии создали алгоритм, который может воссоздать движок компьютерной игры без доступа к исходному коду: просто наблюдая за видеозаписью ее прохождения. Программу уже опробовали на игре Super Mario Bros.

MS Excel – табличный процессор очень здорово выручает при выполнении широкого круга задач, от решения транспортных задач, или нахождения корней полиномов до фильтрации данных и моделирования экономических ситуаций, с помощью Excel можно даже писать программные решения. Но, если можно писать программы, то может можно и игры, ведь, по сути, игра – это та же программа. Абсолютно верное предположение, представляем Вашему вниманию шесть игр, написанных в Excel.

Чтобы запустить игру, необходимо наличие табличного процессора Excel, а также нужно разрешить выполнение макросов.

Первая игра с незамысловатым названием 2048.

Суть игры заключается в том, чтобы собрать один квадрат с числом 2048, до того, как на поле закончатся пустые клетки, двигая поле в одном из четырех направлений за один ход, если рядом находятся квадраты с одинаковым числом, они сливаются. За каждый ход пользователя на поле появляется дополнительная клетка с минимальным числом «2». Игра очень затягивает, поэтому хорошенько подумайте, прежде чем запустить.

Ссылка, по которой можно закачать книгу excel с игрой.

Но это еще не все, если игра Вам пришлась по вкусу, но вы боитесь быть пойманным, все-таки, хоть игра и находится в среде Excel, объяснить, что это полезно по работе будет достаточно сложно, особенно в режиме 3D, поэтому есть версия, замаскированная под финансовый отчет.

Candy Number Crunch Saga.

Здесь вы можете почувствовать себя трейдером на бирже прямо из книги Excel. Скрытой версии нет, но если удалить цветастые буквы, то можно притворится, что документ относится к работе (конечно, если вы не на стройке разгружаете кирпичи, а то вообще странно будет выглядеть).

Монополия.

Эта игра не нуждается в представлении, теперь для того, чтобы в нее играть Вам нужен только Excel.

3D лабиринт.

Трехмерным его можно назвать условно, но выглядит впечатляюще, интересно что дальше? Портирование DOOM в Excel? Не исключено.

Arena.Xlsm

Ролевая игра, выполненная в Excel, включает 2000 всевозможных противников, 1000 вариантов комбинации различных вещей, 31 заклинание и 4 концовки.

Читайте также:

      

  • 1с не открывается документ
  •   

  • Завис биос на ноутбуке асус
  •   

  • Как запустить эксель на ноутбуке
  •   

  • Lenovo s510p прошивка bios
  •   

  • Как вшить программу в андроид

Like this post? Please share to your friends:
  • Download microsoft excel 32 bit
  • Dont you word now
  • Dont you know about the word
  • Dont word be happy
  • Dont use the word but