Чем заняться айтишнику в армии — руководство к действию

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

Методы, описанные в статье, не претендуют на истину в последней инстанции. Я описываю то, как это было сделано мной ТАМ, в местах отсутствия интернета и сильнейшего воздействия на психику.

Часть первая — создание формы клиента.
В VBA есть формы… с формами работать приятнее и самое главное — привычнее. Для BomberMan'а мне понадобилось 12 миниатюр и немного творческого подхода в Paint:

— пустая клетка

— бетонная стена

— целая кирпичная стена

— полуразрушенная кирпичная стена (в момент взрыва имитация исчезновения)

— бомба

— яркий огонь взрыва

— догорающий огонь после взрыва (аналогичное исчезновение)

— могилка RIP

— зеленый человечек

— красный

— синий

— желтый

Игровое поле размером 19х29, из них 9х14 бетонных стен. Принцип построения игровой формы таков: на форму необходимо добавить 8 эталонов миниатюр (Visible = false, с них мы просто будем копировать изображения) и 19х29=551 пустых ячеек Image, в них мы будем подставлять эталонные текстуры. Оставшиеся четыре изображения (разноцветные человеки) будут перемещаться над игровым полем по координатам.

Создадаем форму в VBA Экселя.



При инициализации формы необходимо расставить пустые ячейки Image1..551 и цветных человеков по своим местам. Цикл от 1 до 551, с присвоением параметров координат Left и Top. Ну и менюшку подключения набросал.



Клиент сам по себе приложение простое. Далее отслеживаем нажатия клавиш, двигаем человечка и записываем его координаты в файл. Одновременно с этим постоянно считываем и отображаем изменения на игровом поле. Это основа.

Часть вторая — взаимодействие клиента с сервером.
Я организовывал игровой процесс через текстовые файлы. Первый файл — это игровое поле 19 строк по 29 чисел в каждой. 0 — пустая клетка, 1 — затухающий огонь, 2 — яркий огонь, 3 — разрушенная стена, 4 — целая стена… и т.д Сервер работает с простой последовательностью из чисел.



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

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

Оффтопик
Да-да, с голыми координатами, без защиты от телепортации, если вы понимаете о чем я. Привет сослуживцам, не понимающим, как я убегал из заточения среди бомб… Вообще говоря, мой клиент умел и сквозь бомбы пробегать. Режим бога, так сказать. А я всегда ссылался на «баг в бета версии» :)

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



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

Функция взрыва, кстати говоря, была реализована в виде рекурсии. Вся связная цепочка бомб взрывалась в один момент времени, а не по очереди. Поочередный врыв потребовал бы слишком большого FPS, что я не мог себе позволить. А так взрыв получался эффектным и затухал единовременно. На скриншоте правда видны небольшие разногласия в затухании, но это, видимо, вызвано тормозами на стороне клиента.



На Ваш суд получилось своего рода краткое теоретическое описание принципов работы сетевого Бомбермена на VBA.

P.S. Что бы не говорили, а год это очень мало… Сколько еще хотелось успеть сделать, но не хватило времени.
Support the author
Share post

Comments 19

    +3
    Никогда бы не додумался до такого, вот что значит креатив. Автору респект.
    P.S. Креативный и толковый программист и дисплея микроволновки визуализатор музыки сделает. Успехов!
      +4
      Сколько за время службы среднестатистический солдат может написать игр на VB?)
        +14
        Сколько еще хотелось успеть сделать, но не хватило времени.
        Военная служба по контракту — выбор настоящих мужчин программистов!
          +6
          Я делал на Flash стрелялку-убивалку, где врагами были командир части и его зам. Игра пользовалась успехом даже у офицеров :)
            +1
            Я во время службы мечтал написать систему учета военнослужащих — график дежурств, нарядов, автоматический подсчет занятости, подготовка списка смен к заступлению на дежурстве — в общем, всё то, что приходилось мне вручную. Но представляю, какую офицерскую реакцию вызвал бы ответ «Поднимаю веб-сервер для написания админки учета» на вопрос «че делаешь?». Ведь есть же солдатик.
            +9
            А мне как-то пришлось переносить сохранку игры (Elite) с компа на комп. Доступа к usb не было, сети тоже. В итоге распечатал сохранку в HEX виде на А4 и отсканил на другом компе. Потом немного кодинга и собрал отсканенный текст обратно в бинарние. Солдатская смекалка беспощадна.
              +4
              Вот нападет враг, а мы против них хрясь, бомбермена на Excel!
                0
                Давно пора все войны перенести в онлайн.
                Хочет одна страна напасть на другую — хрясь, запустили сервак какой-нить CS или Battlefield и пусть воюют там. Без ущерба для людей, зданий, животных и природы.
                  0
                  Только представьте что там за читы будут делать…
                    0
                    Я эти 2-е игры привел в качестве примера, как одни из самых известных. Можно вообще создать какую-бубнить стороннюю игру. Да и к тому же есть же всякие античиты.
                    0
                    Так уже :)
                    ru.wikipedia.org/wiki/ERepublik
                    «Игра представляет собой отражение реального мира, в котором игроки (граждане) могут участвовать в политической, экономической, общественной и военной жизни государств.»
                    www.erepublik.com/ru
                      0
                      Согласен. И не нужны бюджеты на армию…
                      Вот только к «игрокам» придут ребята из соседней области, которые наклепали простенькие обрезы на токарном по ночам. Коненчо, сильно далеко они не пройдут. Потому что и противнк начнет клепать обрезы…
                      И вернемся туда, где мы уже.
                      Вобщем мир пацифистский невозможен. Просто в силу природы человека. Долго еще на мдо такого мира развиваться. А может быть и никогда.
                      +11
                      Ну извините… можно толчки чистые показать, бордюры и траву покрашенные
                      +2
                      Я еще грязный снег побелкой белил…
                        +1
                        а я здание гуталином красил…
                          +4
                          Продолжайте ваш батл. Сейчас соберем все армейские боевые задачи в одном треде и напишем новую игру на экселе, где герои будут траву красить, снег белить и здания гуталином мазать.
                            +1
                            Рабочее название — «В/ч 31337»
                              +2
                              К сожалению, полностью прочуствовать игру смогут только те, кто служил. Для остальных это будет просто нечто про тупых военных и не более.
                                0
                                про тюрьму игра получилась более сюрреалистичная. Там условия кодинга жестче. Но изучить пхп и основы с++ удалось

                          Only users with full accounts can post comments. Log in, please.