Программа Microsoft Excel может пригодиться во многих ситуациях. Формулы, функции, справочники и учебные пособия, обработка бизнес-информации — всё это может делать Excel. Однако, что если вы хотите просто расслабиться? Excel может помочь и в этом.
В этой статье мы рассмотрим 8 игр, которые запускаются в Microsoft Excel.
2048
Однопользовательская головоломка популярна на Android и iOS. Данная игра создана на основе предыдущих, таких как Threes и 1024. Всего за одну неделю её создал 19-летний Габриэль Сирулли. Не желая зарабатывать на том, что он не изобретал, Сирулли загрузил бесплатные версии игры 2048 на Android и iOS.
Есть версия игры для Excel, позволяющая играть в таблицах. Предлагается режим просмотра 2D и 3D, звуковые эффекты, отслеживание движений и история, некоторые другие трюки.
Скачать: 2048 для Microsoft Excel (бесплатная)
2048 Stealth Mode в Excel
Если нежелательно, чтобы на работе вас увидели играющим, можно запустить незаметную версию с продвинутым механизмом сокрытия. Со стороны будет казаться, что вы работаете с таблицами.
Scrabble
Продолжая разговор о головоломках, поговорим о Scrabble. Tom_Jobim с Reddit создал игру, которая открывает отдельное окно в Excel, так что она не совсем в таблице. Применяется язык VBA.
Реализация игры на высоком уровне. Вы противостоите искусственному интеллекту с различными уровнями навыка, от 1 до 100. Имеется инструмент анаграмм, встроенный словарь, разные тематические планы, таймеры и многое другое.
Скачать: Scrabble для Microsoft Excel (бесплатная)
Arena.Xlsm
Не хотите головоломки? Arena.Xlsm даст вам возможность противостоять более 2000 потенциальных противников с искусственным интеллектом. Когда они появляются на экране, вы должны сразить их.
Имеется 8 боссов, 12 запрограммированных боевых арен, более 30 заклинаний, 20 уникальных предметов и даже системы достижений.
Arena.Xlsm также доступна на Itch.io, если вы предпочитаете отслеживать игры на определённых платформах.
Скачать: Arena.Xlsm для Microsoft Excel (бесплатная)
Candy Crunch Number Saga
Вы берёте контроль над фондовым рынком, в том числе влияя на рыночную стоимость разработчика этой игры King.com.
Эта сатирическая игра происходит в недалёком будущем, где King.com (KING) провела успешное размещение акций (IPO) и их курс взлетел до небес.
Candy Number Crunch Saga предлагает более 35 новостных событий, которые влияют на стоимость акций. Отображается курс акций в реальном времени. Игра стала результатом четырёх дней работы канадского бухгалтера Кари Уолкина. Он же является автором Arena.Xlsm. Игра также доступна на Itch.io.
Скачать: Candy Crunch Number Saga для Microsoft Excel (бесплатная)
Championship Manager For Microsoft Excel
Одна из наиболее сильно вызывающих привыкание игр есть и на Excel. Это неудивительно, поскольку серия футбольных менеджеров больше других игр похожа на таблицы.
Можно играть в четырёх английских лигах, есть кубок Англии, кубок Лиги, Лига Чемпионов. Для трансферов доступно около 3000 футболистов.
Имеются дисквалификации и травмы, которые можно компенсировать молодёжным составом. Кому-то понравится еженедельная таблица результатов в старом стиле.
Нужно иметь ввиду, что вы не сможете получить лучших футболистов Премьер-лиги из реального мира. Все имена созданы случайным образом, чтобы не нарушать авторские права.
Скачать: Championship Manager для Microsoft Excel (бесплатная)
CellSweeper
CellSweeper представляет собой РПГ с подземельями в жанре Roguelike. Игра основана на Сапёре из старых версий Windows.
Она создана при помощи Excel и содержит шесть классов персонажей, быстрый игровой процесс и возможность поменять уровень сложности. CellSweeper может оказаться более привлекательной, чем кажется, поэтому время пролетит незаметно.
Скачать: CellSweeper для Microsoft Excel (бесплатная)
Tetris
Раз на Excel так много головоломок, невозможно обойтись и без Tetris. Здесь данная игра представлена в довольно простом варианте, но это не делает её менее увлекательной.
Скачать: Tetris для Microsoft Excel (бесплатная)
Yahtzee
Yahtzee представляет собой отличную игру в кости для одного или нескольких человек. Вы пытаетесь сделать покер при помощи набора кубиков, игровой процесс простой и за счёт этого увлекательный.
Играть можно вдвоём или против искусственного интеллекта. Есть инструкции по игре и подсчёту очков.
Скачать: Yahtzee для Microsoft Excel (бесплатная)
Бонус: Fraqcel
Это не совсем игра, а скорее психоделический опыт. Или хотя бы попытка предложить его.
Fraqcel генерирует разнообразные геометрические фигуры, которые вы можете увеличивать в сотни раз. Есть четыре типа фракталов, возможность экспортировать изображения, глубокий зум и настраиваемые цветовые палитры.
Чем глубже вы погружаетесь, тем более невероятным становится дизайн. Вы можете использовать меню для изменения настроек, смены цветов и т.д.
Скачать: Fraqcel для Microsoft Excel (бесплатная)
Заключение
Игры для Excel являются довольно нишевым продуктом. Чаще всего их создают изучающие язык VBA люди в качестве практики. Почти все такие игры используют сочетание VBA и вручную созданных макросов. Excel также играет роль во многих Flash-играх. В последних сложнее сделать вид, что вы работаете.
Эти игры демонстрируют разнообразие возможностей Excel. Если вас увидят играющим, вы сможете сказать, что улучшаете ваши навыки работы с Excel.
TrashExpert Staff
Над статьей работал не только один автор, но и другие члены команды TrashExpert: администратор, редакторы или коллектив авторов.
Развлекая — поучай.
(Гораций)
Если вы уже имели какой-то опыт программирования в прошлой жизни (привет, Basic, Pascal и т.д.), то, скорее всего, уже прошли этап «игрописательства». Однако, тряхнуть стариной и размять мозги вполне можно. Если же вы никогда не программировали игр, то никогда не поздно начать этот весьма увлекательный процесс. Всё, что нам потребуется — это Excel (любой версии) и 15-20 минут времени для начала.
Тренироваться будем на известной в узких кругах программистов игре «Жизнь» (Life). Её придумал британский математик Джон Конвей еще в 1970 году на основе работ легендарного Джона фон Неймана — прадедушки всех современных компьютеров. Если вы не сталкивались с ней раньше — не проблема, правила можно объяснить за полминуты:
-
Игра идет на большом (иногда даже бесконечном) поле в клеточку («вселенной»). Как вы понимаете, Excel для такого подходит идеально
-
В один момент времени каждая клетка может быть в двух состояниях — живой (обозначим её каким-нибудь значком или просто единичкой) или же мертвой (пустой). Начальное состояние всех клеток в игре называют первым поколением.
-
Если брать блок клеток 3х3 с текущей клеткой в середине, то вокруг неё оказывается 8 клеток-соседей. Дальнейшая судьба клетки зависит от того, сколько именно живых клеток (N) окажется в этой окружающей области. Вариантов несколько:
- Если клетка была пустая (мертвая), но у нее есть ровно 3 живых соседа, то в ней зарождается жизнь.
- Если клетка живая, но у неё меньше 2 соседей, то она умирает от одиночества.
- Если клетка живая, но у неё больше 3 соседей, то она умирает от перенаселения.
- Если клетка живая и у нее 2-3 соседа, то клетка продолжает жить.
Вот, собственно, и все правила. Можно даже сказать, что всё это неправильно называть игрой, т.к. здесь нет соперников в привычном понимании. Вы расставляете первое поколение, запускаете процесс и затем просто наблюдаете за развитием вашей «колонии» на протяжении нескольких поколений.
Однако, не стоит недооценивать обманчивую простоту этой логики — количество комбинаций, сценариев игры и многообразие фигур в такой игровой вселенной поражает своим разнообразием и поистине бесконечно. В математике подобные модели называют клеточными автоматами. А самое интересное, что реализовать подобную модель можно в любой версии Excel буквально на 20 строчках кода.
Поехали.
Шаг 1. Готовим игровое пространство
Создадим в новой книге три листа:
- game — это будет основной листы игры, где мы будем наблюдать за развитием нашей «колонии»
- next — этот лист будет формировать следующее поколение, которое затем придет на смену текущему
- start — на этом листе мы будем задавать начальную конфигурацию, т.е. первое поколение в нашей игре
На каждом листе (можно выделить их заранее, удерживая клавишу Shift или Ctrl, чтобы не повторять трижды одни и те же действия), разметим игровое поле размером, допустим, 30 на 30 ячеек. Впоследствии размер поля можно будет подправить в соответствии с вашими аппетитами и мощью вашего ПК:
На листе start разметим с помощью единичек первое поколение любым желаемым образом:
Шаг 2. Пишем макрос
Теперь пришла пора расчехлить наш VBA и написать макрос, который и будет делать всю работу, а именно:
- Копировать первое поколение с листа start на лист game.
- Проходить по ячейкам игрового поля на листе game и проверять окружающих соседей (блок 3х3) для каждой из них.
- В зависимости от результатов проверки помечать на листе следующего поколения next ту же ячейку как живую (1) или мертвую (пусто).
- Копировать получившееся новое поколение с листа next вместо текущего на листы игры game.
- Повторять пункты 2-4 несколько раз, сменяя одно поколение другим и отображая на экране изменения в нашей «колонии».
Для начала откроем редактор Visual Basic на вкладке Разработчик (Developer). Если такой вкладки не видно, то её нужно будет сначала отобразить через Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon), включив соответствующий флажок.
В открывшемся окне редактора создадим новый модуль с помощью команды меню Insert — Module, а затем скопируем и вставим туда код нашего макроса:
Sub Life() Dim cell As Range, n As Integer, i As Integer Set rGame = Worksheets("Game").Range("B2:AE31") Set rStart = Worksheets("Start").Range("B2:AE31") Set rNext = Worksheets("Next").Range("B2:AE31") Set wNext = Worksheets("Next") rStart.Copy Destination:=rGame For i = 1 To 50 rNext.ClearContents For Each cell In rGame.Cells n = WorksheetFunction.CountA(cell.Offset(-1, -1).Resize(3, 3)) - cell.value If cell = "" And n = 3 Then wNext.Cells(cell.Row, cell.Column) = 1 If cell = 1 And (n = 2 Or n = 3) Then wNext.Cells(cell.Row, cell.Column) = 1 If cell = 1 And (n < 2 Or n > 3) Then wNext.Cells(cell.Row, cell.Column) = "" Next cell rNext.Copy Destination:=rGame Next i End Sub
Теперь давайте разберем его построчно для понятности:
Поскольку в коде нам придется несколько раз ссылаться и много раз работать с диапазонами игрового пространства (B2:AE31) на каждом из трёх листов книги, то имеет смысл сразу оформить их как переменные. Это делается в блоке:
Set rGame = Worksheets("Game").Range("B2:AE31") Set rStart = Worksheets("Start").Range("B2:AE31") Set rNext = Worksheets("Next").Range("B2:AE31")
Заодно мы создаем ещё и переменную wNext, которая ссылается на весь лист next целиком — это нам тоже пригодится в будущем:
Set wNext = Worksheets("Next")
Затем, перед началом игры, мы должны перенести первое поколение с листа start на лист game. Это выполяется командой прямого копирования с использованием уже созданных переменных:
rStart.Copy Destination:=rGame
Поскольку мы хотим прокрутить в нашей игре не одно, а несколько (например, 50 для начала) поколений, то дальнейшие действия заключены в цикл:
For i = 1 to 50 ... Next i
А внутри этого цикла мы, во-первых, сначала очищаем рабочее пространство на листе next для формирования следующего поколения:
rNext.ClearContents
А, во-вторых, запускаем вложенный цикл прохода по всем ячейкам игровой вселенной на листе game, чтобы проверить каждую из них — это реализовано циклом прохода по коллекции:
For Each cell in rGame.Cells ... Next cell
Ссылка на очередную проверяемую ячейку будет храниться в переменной cell. Для этой ячейки нам нужно сначала построить окрестность 3х3 с ней в середине. Это выполняется с помощью конструкции:
cell.Offset(-1, -1).Resize(3, 3)
Здесь метод Offset(-1,-1) виртуально сдвигает текущую проверяемую ячейку на одну строку вверх и на один столбец влево, а потом метод Resize(3,3) опять же виртуально растягивает эту одну ячейку до новых размеров 3 на 3:
Чтобы посчитать количество заполненных ячеек в полученной окрестности применяется функция рабочего листа СЧЁТЗ (COUNTA), которую в VBA можно вызвать с помощью объекта WorksheetFunction. Таким образом количество живых соседей в окружающей текущую ячейку области 3 на 3 мы получаем выражением (не забыв вычесть из полученного количества текущую ячейку):
n = WorksheetFunction.CountA(cell.Offset(-1, -1).Resize(3, 3)) - WorksheetFunction.CountA(cell)
Дальше нам нужно проверить полученное количество соседей и пометить на листе следующего поколения текущую ячейку как живую или мертвую, согласно правилам игры. Это выполняет блок из трёх проверок:
If cell = "" And n = 3 Then wNext.Cells(cell.Row, cell.Column) = 1 If cell = 1 And (n = 2 Or n = 3) Then wNext.Cells(cell.Row, cell.Column) = 1 If cell = 1 And (n < 2 Or n > 3) Then wNext.Cells(cell.Row, cell.Column) = ""
Когда цикл прохода по ячейкам будет завершен, то сформированное следующее поколение с листа next нужно скопировать на место текущего на листе game — делаем это уже знакомой конструкцией:
rNext.Copy Destination:=rGame
Вот, собственно, и вся логика.
Осталось вернуться в Excel на лист game, запустить нашу игру через вкладку Разработчик — Макросы (Developer — Macro) и насладиться процессом развития нашей колонии:
Ссылки по теме
- Что такое макросы и как их программировать в Microsoft Excel
- Справочник по игре «Жизнь» — сайт LifeWiki
Вам бывает скучно на работе? Часто сидите два-три дня без единого намёка на трудовую деятельность и пытаетесь ее имитировать, а руководство так и ждет ошибки с вашей стороны?
Теперь этого можно будет избежать, ведь в разработке находится пошаговая RPG в стиле Dragon Quest на NES для офисного приложения Excel.
Конечно, идея не нова. В Excel и раньше делали разнообразные игры (даже полноценный шутер). Но если вы читали мои предыдущие статьи, то поймёте, что создавать троллейбусы из батонов белого (или чёрного) хлеба — мое небольшое хобби.
Перейдём же к делу
На данный момент готова альфа-версия графического движка и редактор карт. С вероятностью в 99% они будут дорабатываться в процессе разработки.
Сперва немного расскажу о некоторых технических характеристиках.
1. Скорее всего в игре будет использоваться событийная модель, а не циклическая, ведь для пошаговой стратегии цикл не так уж и важен. Это будет зависеть от того, как быстро Excel справится с рендером одного кадра. Минус такого подхода заключается в том, что написать какой-нибудь платформер на этой основе не получится. В любом случае я попробую оба варианта.
2. Все текстуры имеют размер 16*16 пикселей. Палитра состоит всего из 56 цветов (стандартный размер палитры Excel). В качестве основы я взял палитру NES.
3. Текстуры я рисую в программе Aseprite, а в Excel из. bmp перевожу с помощью небольшого, написанного на VBA софта, который нашел в интернете.
4. Бэкграунд состоит из тайлов, спрайты же привязаны к системе координат.
Графический движок
Карта уровня представляет собой двумерный массив с кодовым обозначением тайла в формате «XXXY», где XXX — номер текстуры по порядку, Y — значение, указывающее на то, можно ли пройти сквозь тайл. Вторая функция пока что не реализована.
Спрайты хранятся в отдельном массиве в формате: координата X, координата Y, порядковый номер спрайта, тип спрайта и тэг. Два последних значения пока не используются.
Для создания графического движка сперва необходимо инициализировать различные переменные. Часть из них хранится на отдельном листе, а в коде я сделал их публичными (знаю, что так нельзя):
— высота и ширина игрового экрана;
— диапазон игрового экрана;
— массив игрового экрана для рендеринга;
— размер одной текстуры;
— координаты камеры;
— координаты игрока;
— номер уровня;
— карта тайлов и координаты спрайтов;
— массив спрайтов, тайлов и спрайтов игрока.
Все текстуры хранятся на отдельном листе с отображением индексов цветов палитры.
Так как это только первая версия движка, нажатие на «Новую игру» тут же запускает метод fillWithTextures (процесс создания массива цифровых значений цвета).
‘##########ЯДРО ГРАФИЧЕСКОГО ДВИЖКА##########
Sub fillWithTextures()
Dim cntRow As Integer, cntCol As Integer, pixOffsetX As Double, pixOffsetY As Double, _
mapBlockX As Integer, mapBlockY As Integer, texXOffset As Integer, texYOffset As Integer, _
texNumber As Integer, arrBlockTex() As Variant
Dim cntSprites As Integer, spriteOffsetX As Integer, spriteOffsetY As Integer, _
spriteNumber As Integer
ReDim arrRender(main.screenH, main.screenW)
For cntRow = 1 To main.screenH
For cntCol = 1 To main.screenW
‘Считаем смещение пикселя экрана относительно координат камеры
pixOffsetX = main.cameraX + cntCol
pixOffsetY = main.cameraY + cntRow
‘считаем спрайты
For cntSprites = 1 To UBound(arrMapSprites(), 1)
‘считаем смещение спрайта относительно пикселя
spriteOffsetX = pixOffsetX — arrMapSprites(cntSprites, 1)
spriteOffsetY = pixOffsetY — arrMapSprites(cntSprites, 2)
‘если пиксель содержит спрайт
If spriteOffsetX >= 0 And spriteOffsetY >= 0 And spriteOffsetX + pixOffsetX < pixOffsetX + main.blockSize _
And spriteOffsetY + pixOffsetY < pixOffsetY + main.blockSize Then
‘если элемент спрайта не пуст
If arrSprites((spriteOffsetY + blockSize * arrMapSprites(cntSprites, 3)) + 1, spriteOffsetX + 1) <> 0 Then
arrRender(cntRow, cntCol) = arrSprites((spriteOffsetY + blockSize * arrMapSprites(cntSprites, 3)) + 1, spriteOffsetX + 1)
End If
End If
Next
‘рисуем тайлы
If (pixOffsetX > 0 And pixOffsetX < main.mapWidth) And _
(pixOffsetY > 0 And pixOffsetY < main.mapHeight) Then
‘расчет тайла, в который входит пиксель
mapBlockX = WorksheetFunction.RoundUp(pixOffsetX / main.blockSize, 0)
mapBlockY = WorksheetFunction.RoundUp(pixOffsetY / main.blockSize, 0)
‘определяем номер текстуры
texNumber = arrMapTiles(mapBlockY, mapBlockX)
‘Определение цвета текстуры для пикселя
texXOffset = getTexOffset(pixOffsetX) + 1
texYOffset = getTexOffset(pixOffsetY) + 1
If arrMapTiles(mapBlockY, mapBlockX) <> «» And arrTiles(texNumber * _
main.blockSize + texYOffset, texXOffset) <> «» And arrRender(cntRow, cntCol) = «» Then
arrRender(cntRow, cntCol) = arrTiles(texNumber * main.blockSize + texYOffset, texXOffset)
End If
End If
Next
Next
End Sub
Первым делом происходит поиск спрайтов, которые нужно отрисовать. Для этого программа проверяет каждый «пиксель» игрового экрана, считает смещение этого пикселя относительно стартовых координат камеры, а также смещение относительно всех спрайтов на уровне. Если смещение «пикселя» относительно спрайта по каждой оси равно от 0 до 15 (так как размер текстуры 16*16), берётся индекс нужного цвета из массива спрайтов.
Вторым пунктом программа на основе смещения относительно координат камеры высчитывает позицию «пикселей» на карте тайлов. Когда нужный тайл найден, программа с помощью функции getTextOffset возвращает индекс цвета пикселя из массива тайлов.
‘Возвращает координату текстуры
Function getTexOffset(dCoordinate As Double) As Integer
getTexOffset = (dCoordinate — 1) Mod main.blockSize
End Function
Почему сперва происходит проверка спрайтов, а затем тайлов?
Все просто. Программа просто не трогает те «пиксели», которые уже закрашены спрайтами, что влияет на производительность в лучшую строну.
P.S. На следующий день я понял, что проверка условия «закрашенности» спрайтами должна производиться в начале. Тогда это повлияет на производительность. Привет, оптимизация.
Вторая проблема — это проверка спрайтов для каждого пикселя экрана. Предположим, что на уровне находится 40 спрайтов. При размере экрана 96*64 = 6144 пикселей количество итераций цикла достигает 6144 * 40 = 245760. Если пойти другим путём и проверять спрайты не для каждого пикселя, а по условию нахождения в поле зрения камеры, то количество итераций не превысит 40*16*16 = 10240. Эта проблема решается быстро.
Создание игрока и рендеринг изображения
Для того, чтобы поместить спрайт игрока в рендер-массив нужно посчитать смещение спрайта относительно координат камеры.
Sub renderPlayer(imagePose As Integer)
Dim offsetX As Double, offsetY As Double, cntRow As Integer, _
cntCol As Integer
‘Считаем смещение относительно координат камеры
offsetX = main.playerX — main.cameraX
offsetY = main.playerY — main.cameraY
‘Если игрок не находится за пределами камеры
If offsetX >= 0 And offsetY >= 0 And _
offsetX < main.cameraX + main.screenW And _
offsetY < main.cameraY + main.screenH Then
For cntRow = 0 To main.blockSize — 1
For cntCol = 0 To main.blockSize — 1
‘Если пиксель текстуры заполнен
If main.arrPlayerSpr((cntRow + 1) + (imagePose * main.blockSize), cntCol + 1) <> 0 Then
‘Если пиксель не заходит за пределы камеры
If cntRow + main.playerY <= main.screenH + main.cameraY And cntCol + main.playerX <= main.screenW + main.cameraX Then
arrRender(offsetY + cntRow, offsetX + cntCol) = main.arrPlayerSpr((cntRow + 1) + (imagePose * main.blockSize), cntCol + 1)
End If
End If
Next
Next
End If
End Sub
Аргумент imagePose будет использоваться для имитации поворота игрока при движении.
В конце-концов рендер-массив готов, поэтому вызываем последнюю процедуру, которая рисует сформированный кадр на игровом поле. Ее я показывать не буду, потому что она очень сырая и будет дорабатываться.
Будут дорабатываться и текущие процедуры, потому что на данный момент быстродействие немного хромает и реализовать упомянутую циклическую модель в данный момент проблематично.
Вот, что получается в итоге:
На этом можно пока закончить. Надеюсь, что из ваших глаз не пошла кровь от «лучшего в мире» языка программирования и попыток написать что-то осмысленное.
В любом случае жду критику и советы. Всегда интересно послушать, что скажут люди.
Немного саморекламы
Я создал паблик ВКонтакте, куда буду выкладывать свои мысли, алгоритмы, код, ссылки на эти статьи и конечно мемасики:) Если вам интересно наблюдать за разработкой игр и разных странных вещей, добро пожаловать.
У нас появилось свободное время.. значит можно поиграть! В этой рубрике мы будем выкладывать простенькие игры в Excel. Да, в Excel тоже можно писать игры, ведь в нем встроен язык программирования VBA. После того как вы скачаете игру (по ссылкам ниже), необходимо будет только включить макросы (как это сделать описано тут). Во многих Ирах в Excel (в макросах) есть много интересных находок. Кто знает, может игра в Excel поможет вам не только скоротать время, но и научиться чему-то новому. Играйте в Excel и пишите игры сами!
Игра в Excel «Морской бой»:
Battleships
Игра в Excel «Змейка»:
snaked
Игра в Excel «Вертолет»:
gmexcopter
Игра в Excel «Квадрат»
Squares
Игра в Excel «Лягушка»
frog_leap
Игра в Excel «Темница»
dungeon
Если у вас есть чем поделиться — присылайте!
Спасибо за внимание.
Excel — мощная программа, в которой можно создавать другие программы, поменьше. Даже отдельные функции являют собой, по сути дела, особые программки. Не все они служат скучным целям. Игр, написанных специально для Excel, довольно много. Возможно, игры и не исчезли, а просто их упрятали поглубже. Если вам известно, как запустить в Microsoft Office какую-нибудь игрушку, напишите мне, пожалуйста. Иногда в творческом процессе так хочется кого-нибудь пристрелить или где-нибудь полетать…
Игры inside
В версиях Excel 95-2000 игрушки, придуманные авторами программы, «спрятаны». Например, в Excel 95 нужно проделать следующие шаманские действия.
- Создать новую книгу.
- Выделить строку gод номером 95.
- Нажать клавишу табуляции.
- Открыть меню Справка ► 0 программе.
- Удерживая одновременно клавиши Ctr, Alt и Shift, щелкнуть на пункте Техническая поддержка.
И запускается «стрелялка», напоминающая комбатс и светлой памяти Doom, только попроще!
В Excel 97 действия для вызова игры такие.
- Выполнить команду Сервис ► Параметры и в открывшемся окне на вкладке Общие снять флажок Стиль ссылок R1C1.
- Создать таблицу.
- Нажать F5 и ввести в появившемся окне кабалистическую надпись Х97:_97.
- Нажать Enter.
- Выделить строку с номером 97.
- Нажать клавишу табуляции, а затем, удерживая Shift и Ctrl, щелкнуть на значке Мастера диаграмм и подождать, пока открывающееся окно не заполнит весь экран.
В результате вы сможете оценить достоинства авиасимулятора, придуманного и разработанного программистами Microsoft.
В Excel 2000 процедура запуска игры усложнена. Нужно выполнить такие действия.
- Создать новую книгу.
- Сохранить ее в формате веб-страницы (Сохранить как Web-страницу), установив флажки выделенное: Лист и Добавить интерактивность.
- Открыть созданную страницу в Internet Explorer версии не ниже 5.0.
- Выделить строку 2000.
- Клавишей табуляции перевести выделение на ячейку WC 2000.
- Одновременно нажать клавиши 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, перешли в активное состояние. При внимательном рассмотрении файл с игрой «Тетрис» оказался очень простым. Кроме данных об авторе, на листе оказались две кнопки — Запуск и Выход, а также список уровней сложности, от первого до пятого. Я, естественно, начал с самого сложного, пятого, и погрузился в игру.
Выяснилось, что руки до сих пор помнят клавиши управления игрой: на цифровой клавиатуре стрелки ← и → сдвигают фигуру соответственно влево и вправо; стрелка ↑ поворачивает фигуру вокруг своей оси; стрелка ↓ ускоряет движение вниз. Мышечная память оказалась очень кстати, потому что в самом файле об управлении игрой — ни слова.