Как сделать игру в excel

Как сделать игру в excel

трюки • приёмы • решения

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

Теперь смысл игры. Предварительно в три маленьких окна в правой части листа выводятся три различные картинки (условно их можно называть эталонными). При щелчке на кнопке Бросок в каждое из двух основных окон для изображений должна попадать (случайным образом) одна из трех возможных картинок (из набора эталонных, которые видны на экране). Если в результате такого случайного выбора картинки в обоих основных окнах совпадают, то в элемент управления «Надпись» для результата добавляется 3 балла, а если нет, то вычитается 1 балл.

Рис. 1.42. Интерфейс разрабатываемой игры

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

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

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

‘ Листинг 1.26. Процедура, выполняемая при открытии книги Private Sub Workbook_Open() Worksheets(1).Res.Caption = Worksheets(1).Range("M1").Value End Sub

Таблица 1.2. Имена объектов на рис. 1.42

Свойство Name Тип объекта Комментарий
Image1 Изображение Левое основное окно для изображения
Image2 Изображение Правое основное окно для изображения
ImageEtalon1 Изображение Левое окно для образца
ImageEtalon2 Изображение Среднее окно для образца
ImageEtalon3 Изображение Правое окно для образца
Label1 Надпись Подпись «Результат»
Res Надпись Для отображения результата
Brosok Надпись Для выполнения броска
NewGame Надпись Начать игру снова

В листинге 1.27 приведена основная процедура, выполняемая по щелчку на кнопке с надписью Бросок.

‘ Листинг 1.27. Обработка щелчка на кнопке Бросок Private Sub Brosok_Click() Symma = Range("M1") Randomize ‘ Формирование случайных чисел a = CInt(Rnd * 3 + 0.5) b = CInt(Rnd * 3 + 0.5) ‘ Отображение картинки в первом окне If a = 1 Then Image1.Picture = ImageEtalon1.Picture ElseIf a = 2 Then Image1.Picture = ImageEtalon2.Picture Else Image1.Picture = ImageEtalon3.Picture End If ‘ Отображение картинки во втором окне If b = 1 Then Image2.Picture = ImageEtalon1.Picture ElseIf b = 2 Then Image2.Picture = ImageEtalon2.Picture Else Image2.Picture = ImageEtalon3.Picture End If ‘ Формирование результата If a = b Then Symma = Symma + 3 Else Symma = Symma — 1 End If ‘ Фиксирование результата в надписи и в ячейке на листе Res.Caption = Symma Range("M1").Value = Symma End Sub

Читайте также:  Samsung s6 edge nfc

В тексте процедуры используется функция Rnd, которая нам уже встречалась. Преобразование CInt (Rnd * 3 + 0.5) позволяет сформировать случайное целое число, которое может принимать одно из трех возможных значений: 1, 2 или 3. Таким образом, можно значения переменных а и b сопоставить с номерами картинок. В результате при совпадении картинок мы увеличиваем сумму выигрыша на 3 балла, а при несовпадении, соответственно, уменьшаем на один.

Если не предпринимать каких-либо действий, то функция Rnd при каждом повторном открытии книги выдает одну и ту же последовательность случайных чисел. Чтобы устранить данный недостаток, мы воспользовались функцией Randomize, которая выполняет перемешивание случайных чисел. В результате при различных сеансах работы последовательность, выдаваемая по нажатию кнопки Бросок, каждый раз будет разная.

Другая кнопка на листе (NewGame) позволяет сбросить содержимое ячейки М1 и значение свойства Caption элемента Res в ноль для начала новой игры (листинг 1.28).

‘ Листинг 1.28. Процедура сброса суммы баллов в ноль Private Sub NewGame_Click() Symma = О Res.Caption = Symma Range("M1") = Symma End Sub

Один из вариантов развития игры показан на рис. 1.43.

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

Заслуженно популярная пару-тройку лет назад штучка все еще юного итальянского разработчика Габриэле Чирулли, полученная им, судя по всему, путем скрещения старого доброго советского тетриса и еще более старых и добрых американских пятнашек, оказывается, доступна не только в Android и iOS. Правила те же: для win’а нужно добиться равного названию игры результата. Сущее залипалово! Думаю, следующий шаг игроделов – скрестить такен со змейкой.

Прочесть на английском некоторые подробности об Excel-версии можно на страничке разработчиков

Angry Birds и Angry Birds Rio

Отчего люди не летают. Я говорю, отчего люди не летают так, как птицы? Мне иногда кажется, что я птица. Когда заряжен в рогатку, так тебя и тянет лететь: то соплеменников вызволять из клеток, то нелепую архитектуру зеленых поросят рушить, погребая тех под руинами. и все – ценой собственной жизни.

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

Apple Shooter

Следом вспоминается еще какой-нибудь легендарный герой: теперь из линейки Эйгиль – Геминг – Гейти – Токи – Вильгельм Телль и т. д. Нетрудно догадаться: задача яблочного шутера в том, чтобы раскрошить пущенной из лука стрелой яблоко на голове your friend, не выбив при этом последнему яблоко глазное, а равно – не погубив попаданием еще куда-нибудь. Благодаря карикатурно примитивной графике и разнообразию вариантов умирания стоящего под стрелой (в зависимости от того, куда последняя вонзается), игрушка не лишена обаяния, присущего мрачному юмору. Чего, на мой взгляд, не удалось достичь в деле метания ножей в прикованную к тренажеру для вестибулярного аппарата подружку (Knife Throw) или тупой пальбе по беззащитным бегающим человечкам в Bang Bang 2.

Читайте также:  Как в вибере скрыть переписку

Двойка и тема массовых расстрелов рифмует последнюю игрушку с Ricochet Kills 2– название вполне говорящее: некий персонаж пуляет из пистолета черным курсором по человечкам в костюмчиках, курсор рикошетит относительно предсказуемым образом от причудливо расположенных конструкций и рамок кадра. Сожаление о том, что рикошетом невозможно убить стреляющего, немного компенсируется возможностью задавить его коробкой или бочкой, сваливающимися на всех подряд в результате попадания курсора в расположенный рядом с ними ящик со взрывчаткой. Гуманности игре добавляет и то, что, судя по реакции человечков в костюмчиках на ранения, они всего лишь куклы, наполненные красной краской: тир, да и только.

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

Defend Your Castle

Экшен с элементами стратегии! Безоружных человечков (вся цель существования которых – стучать по воротам и стенам замка, быстро и незаметно их разрушая) нужно хватать курсором за шкирку и шмякать об землю, зарабатывая тем самым валюту на укрепление обороноспособности крепости. Приходится поразмыслить, на что именно тратить скромные средства. В игре есть место переманиванию врагов на свою сторону с превращением их в лучников, обвешанным взрывчаткой защитникам, ремонтным бригадам и даже магии. Прорисовка всех элементов игры. доставляет. Доводилось читать, что DYC была одной из самых рейтинговых игр 2012 года. Чтобы не обкрадывать предполагаемого геймера в интенсивности визуальных наслаждений, здесь обойдусь без скриншота.

Crab Ball

Два красных-прекрасных крабика, разделенных серой плитой, играют в мяч на песчаном берегу. Только и всего? Только и всего. Но есть что-то прелестное в этой примитивной вещице. Чего лишен, казалось бы, более осмысленный и нагруженный действием Baseball.

Drunk Driving

Смею предположить, что управлять автомобилем (да еще в пьяном виде) – занятие не из легких. Зато игра про это дело предельно простая. Клацаете spacebar, пытаясь не врезаться / не взорваться, ан ничего не выходит – мой «рекорд» на нижеследующем скриншоте. Попуститься, вместе с тем продолжив погружаться в автомобильную проблематику, можно попытками припарковать за минуту Фольксваген-жук в пределах очень тесной и почти под завязку забитой другими «жуками» парковки. Так и не достигнув успеха в Parking 2 Perfection, я предпочел отправиться на пешую прогулку, припоминая по пути основные положения «Общественной идеологии автомобилизации» Андре Горца.

Flight of the Hamsters

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

SuDoku

Да, это судоку в Excel’е – привычный для глаз многих убийц досуга по всему свету латинский квадрат девятого порядка. У меня нет точного ответа на вопрос, почему оно попало в обзор. Возможно, из-за давней симпатии к разным формам фитнеса для мозга. Если то действительно так, нельзя не упомянуть здесь же Easy Chess (чье название не обманывает) и трехмерные крестики-нолики – 3D tic tac toe.

Читайте также:  Как расшарить файл excel для одновременного редактирования

Напоследок – две выдающиеся в некотором смысле вещи: Invisible и QEX . Когда в них попадаешь, нетрудно позабыть, что все это существует на базе MS Excel: окошко создания таблиц пропадает и появляется примерно то, что видно на скриншоте.

Invisible – вроде бы, типичный Arkanoid: платформа-ракетка отбивает шарик, который истребляет коробки. Но есть два приятных, многое меняющих нюанса: игра происходит в условно трехмерном пространстве, из-за чего не всегда видно, где там этот шарик, а прирост числа коробок происходит в более хаотичном сравнительно с классической версией порядке, да еще не только на плоскости пола, но и ввысь. QEX – разноцветное и шибко гибкое существо с парой патрульных – Спарксов; вместе они не желают делиться общим пространством, а желают истребить протагониста. У последнего единственное средство выжить – городить огороды, среди которых жадной троице становится тесно, и те в итоге издыхают. Шансы на победу обратно пропорциональны жадности самого взявшегося за передел территории. Неудивительно, что выдумал эти не лишенные изящества вещички японец – Коуйти Тани.

Разбор создания игры в Excel

При создании игры мы преследовали две цели:

  1. Продемонстрировать возможности программирования и визуализации в Excel. На примере научить вас некоторым приемам создания пользовательской формы и макросов, которые с ней взаимодействуют.
  2. Разнообразить досуг после плодотворной работы в Excel. Игра также встроена в нашу надстройку VBA-Excel чтобы она всегда была под рукой.

Разработка игрового поля

Игровое поле пятнашек состоит по сути из 16 фишек, можно также добавить кнопкой перемешать (начать с начала) и отображением количества шагов. В качестве фишек мы будем использовать обычные кнопки CommandButton — 16 штук.

Расположим их в виде поля 4×4. Уберем стандартное название кнопок (а свойство Caption) сделаем их квадратными в форме фишек. Вообще тут можно дать волю фантазии наложить тени, выбрать цвет и так далее, углубляться не будем. На игровое поле мы добавили также кнопку перемешать. Она будет служить для сброса и начала новой игры.

Еще один момент, чтобы кнопки не "нажимались" (т.е., чтобы по клику не происходила анимация нажатия на кнопку), установим свойство Locked в положение True.

Механика игры

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

Старт игры

Инициализация формы вызываем процедуру создания поля.

Случайным образом заполняем игровое поле и проверяем комбинацию на решаемость. Подробно проверку на решаемость описывать не будем, так как не в этом цель. Изучить этот вопрос можно на сайте http://pyatnashki.wmsite.ru/kombinacyi.

Функция проверки заряженного числа на четность

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

В конце делаем проверку поля и проверяем правильно ли игрок расставил фишки.

Осталось "отловить" нажатие стрелок на клавиатуре и запускать нужное движение. Для этого воспользуемся событием формы UserForm_KeyDown.

Ссылка на основную публикацию
Как сделать flash игру
Если вы не наделены природным трудоголизмом — увы, ничего хорошего из этого не выйдет. Лень — враг всех, особенно создателей...
Как поменять вид диспетчера задач
А вот вопрос.почему каждый раз когда я выключаю компьютер а на следующий день включаю появляется надпись некорректное выключение. 30-04-2013 в...
Как поменять билеты ржд купленные через интернет
В жизни всегда есть место непредвиденным обстоятельствам. Если срочно потребовалось обменять или вернуть заранее приобретенный билет на более подходящий, это...
Как сделать input неактивным
Иногда на сайте необходимо сделать форму, в которую пользователь вводит какие-либо данные. Полей в форме может быть сколько угодно, однако...
Adblock detector