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

в 17:19, , рубрики: Excel, vba, армия, ненормальное программирование, Программирование

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

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

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

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

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

Чем заняться айтишнику в армии — руководство к действию - 4 — целая кирпичная стена

Чем заняться айтишнику в армии — руководство к действию - 5 — полуразрушенная кирпичная стена (в момент взрыва имитация исчезновения)

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

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

Чем заняться айтишнику в армии — руководство к действию - 8 — догорающий огонь после взрыва (аналогичное исчезновение)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оффтопик

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

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

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

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

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

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

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

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

Автор: oWart

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js