Чем заняться айтишнику в армии или как я на VBA игры писал (с хабра)


Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор  
#1  Сообщение 24.09.14, 09:14  
Участник

Регистрация: 18.08.2014
Сообщения: 1498
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Чем заняться айтишнику в армии или как я на VBA игры писал

Прошло уже больше двух месяцев с момента моей демобилизации. Я уже освоился на свободе, пришло время рассказать правду. Служил я в разведке!.. «Секретная» в/ч ОсНаз ГРУ. По распределению попал в отдел ЦРП (Центр радиоперехвата). Работенка не пыльная, сидишь ночами в наушниках и слушаешь врага. Но речь пойдет не об этом.

У каждого оператора поста радиоперехвата (таковыми мы числились) был в распоряжении компьютер с подключенными к нему РПУ (радио-приемными устройствами). На компьютере стоял спецсофт + Excel. Все остальное было заблочено. После N-ного дежурства я стал скучать… Зачесались руки.

Вспомнил, что когда-то имел дело с VBA. Никогда дальше написания простейшей функции не заходил. Решил посмотреть, что может получится при более детальном изучении. После ночи мучений я родил черепаху змею! Классическая змейка, реализованная путем закраски нужных ячеек. Была возможность создавать себе препятствия, опять же, просто закрашивая нужные ячейки.

Изображение

После змейки было еще парочка небольших игрушек, но все это мелочи…

Изображение

Сослуживцы ходили и клянчили, чтобы я им все это скинул, всем надоело играть в косынку. Способов сделать это я не знал. Порты USB отключены аппаратно. Но, как выяснилось, все компьютеры были объединены в локальную сеть. Запустив через Excel командную строку, я смог зайти на соседний компьютер и скинуть туда необходимые файлы. И тут меня осенило… Excel, VBA, чтение/запись файлов, локальная сеть… Смекаете?

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

Изображение

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

Изображение

Респект этим ребятам. До сего момента я не видел возможность использования форм на VBA. Не заметил сразу, да и не задумался над этим. Этой же ночью было решено переписать морской бой на формах. Код получился компактней, интерфейс дружелюбней, работоспособность выше.

Изображение

Работа в отделе встала! Морской бой любят все… кроме меня. Ну не нравится мне эти глупые перестрелки. В общем, на нем я не остановился. Но, забегая вперед, скажу, что морской бой был самым популярным.

Bomber Man
Кто-то в шутку сказал «а слабо написать Bomber Man?».
Вызов принят! Месяц неторопливых мучений и в свет вышел ОН.

Изображение

Изображение

Миниатюрки отрисованы в Paint. Игра рассчитана на одновременное подключение 4-х человек с разных компьютеров. Приложение клиент-серверное. Сервер был запущен в отдельном приложении. Количество жизней не ограничено (я думаю, по количеству надгробий это понятно).
Но все не так гладко, как кажется. При записи/чтении файлов возникали ошибки из-за одновременного обращения и добиться более 10 кадров в секунду мне не удалось. Если игра шла на двух человек, то все укладывалось в 25-30 кадров, но на четырех добиться хороших скоростей мне не удалось. Отсутствие интернета не дало возможности найти решение.

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

Texas Holdem Poker
Я очень люблю покер. В армии мне его сильно не хватало. Реализацию покера на 9 человек я видел не такой уж и сложной. Разве что над алгоритмами поиска собранной комбинации пришлось поломать голову, но это было интересно. Отсутствие интернета заставило поднапрячься. Одну ночь я потратил на отрисовку колоды карт. Другую на стол и фишки. А дальше начался процесс написания. Покер у меня получился быстрее Bomber Man. В одну из ночей мы оттестировали его на максимальное количество игроков, тесты прошли вполне успешно.

Изображение

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

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

  Профиль  
  
    
#2  Сообщение 24.09.14, 10:35  
Завсегдатай
Аватара пользователя

Регистрация: 18.08.2014
Сообщения: 2654
Благодарил (а): 6 раз.
Поблагодарили: 46 раз.
Чума. Как только наш человек не изъе...нется от скуки да от безделья.

ЗЫ. Я знаю, как создать долбаную НацОсь. Надо закрыть человек пятьдесят программистов годика на два, навалив им целую кучу разнообразного компьютерного железа, гору спецификаций - и ни одного, сцуко, байтика софтины. Так, чтобы для поиграть в игрушку нужно было б сначала написать операционную систему. Ручками, в кодахъ, блеать :)

  Профиль  
  
    
#3  Сообщение 24.09.14, 12:49  
Участник
Аватара пользователя

Регистрация: 18.08.2014
Сообщения: 800
Благодарил (а): 32 раз.
Поблагодарили: 31 раз.
.lt.~MO писал(а):
Я знаю, как создать долбаную НацОсь. Надо закрыть человек пятьдесят программистов годика на два

Ни за что 50 программистов не родят ничего путного без надзирателя-идиота (в хорошем смысле слова) - они передерутся за свое собственное видение цели и метода. Игрушки, описанные в старт-топике, получились только потому, что он был один.

  Профиль  
  
    
#4  Сообщение 28.09.14, 23:11  
Участник

Регистрация: 18.08.2014
Сообщения: 1498
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Православный C++

i_v_k_1
28 сентября, 19:43

Начинаем писать Русскую Православную ОС
Православный код логгера на Русском Языке Программирования "РЯП++".

Компилируется в вижуал студии 2012. Работает.

Изображение

Код
преминемъ свѧтцы рѧдовой;

сословїе Лѣтописецъ
помолясь_преминемъ
мїрный:
приснопребывающїй Лѣтописецъ * сущїй()
помолясь_преминемъ
аще (суть == ничто) суть = новый Лѣтописецъ();
вспѧтить суть;
аминь

канѡнъ <сословїе T>
безвидный записати(T & сонмъ)
помолясь_преминемъ
изыти << сонмъ << конецъ_строки;
аминь

апостольный:
Лѣтописецъ() помолясь_преминемъ аминь
Лѣтописецъ(присно Лѣтописецъ & );
Лѣтописецъ & нарокъ=(присно Лѣтописецъ &);
приснопребывающїй Лѣтописецъ *суть;
аминь;

Лѣтописецъ* Лѣтописецъ::суть = ничто;

цѣлыя прѣсвѧтаѧ_молитва(цѣлыя число, сѵмволъ * сонмъ[])
помолясь_преминемъ
Лѣтописецъ * лѣтописецъ = Лѣтописецъ::сущїй();
ѿ_лукаваго долгомѣрный цѣлыя чисмѧ = ничто;
имати
помолясь_преминемъ
покамѣстъ (правда)
помолясь_преминемъ
лѣтописецъ->записати("мгновенїе");
лѣтописецъ->записати(чисмѧ);
чить (1000);
аще (чисмѧ++ == 10) ѿгнати "бѣда";
аминь
аминь
плѣнити (сѵмволъ * прогрѣха)
помолясь_преминемъ
лѣтописецъ->записати(прогрѣха);
аминь
вспѧтить ничто;
аминь


Define
#pragma once

#define безвидный void

#define изборъ bool
#define правда true
#define лжа false

#define ѿ_лукаваго unsigned
#define ѿ_Всевышнѧго signed
#define сѵмволъ char
#define корочунъ short
#define цѣлыя int
#define долгомѣрный long
#define плоскънъ float
#define сугубый double

#define прѣсвѧтаѧ_молитва main
#define помолясь_преминемъ {
#define аминь }

#define покамѣстъ while
#define аще if
#define ощо else
#define доколѣ for
#define прави_тудѣ goto
#define прїуподобити switch
#define коли case
#define безъиначественно default
#define вспѧтить return
#define имати try
#define плѣнити catch
#define ѿгнати throw

#define рѧдовой std
#define внити cin
#define изыти cout
#define конецъ_строки endl
#define преминемъ using

#define свѧтцы namespace
#define вперсити inline
#define присно const
#define приснопребывающїй static
#define изъѧтїе exception

#define сословїе class
#define апостольный private
#define равноапостольный protected
#define мїрный public
#define не_сущїй virtual
#define нарокъ operator

#define изблевана_струѧ ostream
#define поглъщена_струѧ istream
#define изъѧвленїе ref
#define свитокъ file

#define канѡнъ template
#define новый new

#define ничто 0 // в церковнославянском нет 0
#define чить Sleep

  Профиль  
  
    
#5  Сообщение 29.09.14, 08:32  
Завсегдатай
Аватара пользователя

Регистрация: 18.08.2014
Сообщения: 2654
Благодарил (а): 6 раз.
Поблагодарили: 46 раз.
Вега писал(а):
Ни за что 50 программистов не родят ничего путного без надзирателя-идиота (в хорошем смысле слова) - они передерутся за свое собственное видение цели и метода. Игрушки, описанные в старт-топике, получились только потому, что он был один.
Передерутся - это хорошо...Тем скорее выведется тимлид - методом крысиного короля. Ну а дальше будет все как у людей: Батяня - Великий Архитектор, РП "блатные" , "мужики" - кодеры, "девочки-тестировщицы" внизу тоже где-то там...

  Профиль  
  
    
#6  Сообщение 12.10.14, 21:26  
Новичок

Регистрация: 12.10.2014
Сообщения: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
А будь сеть глобальной, можно было бы подрабатывать.
Есть Подработка на 4 часа ежедневно. Оплата 250-300 рублей в час. Требуются модераторы на форум и администраторы группы ВКонтакте. Нужно следить за поступающими сообщениями и удалять нежелательные посты согласно инструкции. Работа требует внимания. Возможны ежедневные выплаты и при необходимости подписание трудового договора. Пишите на email: vkontaktework@gmail.com

  Профиль  
  
    
#7  Сообщение 12.10.14, 22:41  
Завсегдатай
Аватара пользователя

Регистрация: 18.08.2014
Сообщения: 2654
Благодарил (а): 6 раз.
Поблагодарили: 46 раз.
Накуй, румба.

  Профиль  
  
    
#8  Сообщение 12.05.15, 17:34  
Участник

Регистрация: 01.05.2015
Сообщения: 1726
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Россия
Талантливый парень) сделать такое на вба, в армии, без инета...молодец!

  Профиль  
  
    
#9  Сообщение 12.05.15, 21:35  
Флудер
Аватара пользователя

Регистрация: 27.04.2015
Сообщения: 11746
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Россия
познавательно)

_________________
"Опыт не мешает совершать прежние ошибки, но мешает получать от них прежнее удовольствие" ©

  Профиль  
  
    
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 




[ Time : 0.101s | 20 Queries | GZIP : Off ]