Маленькие игры в Excel на Visual Basic

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

Конечно же, я их сохранил и хочу ими поделиться с вами. В архиве всего 9 файлов, и одна папка, описание каждого из них даю ниже. Все программы написаны на VB, работают на 2003 и 2007 Excel. Сразу скажу, что я по профессии экономист, а не программист, игры писал для развлечения, и код там никакой :) Вирусов быть не должно :)

Casino – планировался как сборник «четыре в одном». У вас имелось определенное количество бабла и можно было его потратить, играя в рулетку, очко, покер и джекпот. Однако мне на каком-то этапе уже не хватало времени и желания все прикрутить, так что в файле есть только рулетка и очко. Да и трата бабла реализована кривовато. В общем там все понятно, нажимаете кнопку на листе и играете :)

JackPot – вообще уже не помню че там за фигня, но смысл вроде в том, что после нажатия кнопки под каждым из чисел из верхней строки в каждый цикл формируется меньшее число, которое в очередной цикл опять уменьшается. Циклы идут до тех пор, пока одно из нижних чисел не станет равно 0 или отрицательным. После окончания каждого цикла ищется сумма всех чисел из второго ряда и проверяется на делимость на 10, 100 и 1000. Типа, если выпала такая редкая удача, то сумма умножается соответственно на 2, 4 и 10. Ну и после окончания всех циклов выдается общая сумма к выигрышу. Вот такой бредовый алгоритм у меня был в мозгах 10 лет назад :)

Poker – конечно, изначально мой юношеский задор хотел сделать полноценную игру с AI. Но получилось вот это. После нажатия кнопки вы видите 3 карты в своей руке и вам предлагается ставить (bet) или скинуть карты (fold). После вашего фолда или когда на столе появятся 5 карт, игра заканчивается и вы видите карты на руках противника и все комбинации ваши и противника.

Guess1000 – угадайка, простейшая игра, которую учили алгоритмизировать во времена моей юности. Вы с компом загадываете число от 1 до 1000 и угадываете их друг у друга, стремясь сделать это первым.

БыкиКоровы – аналогично, популярная игра в свое время. Комп загадывает 4-значное число, состоящее из разных цифр, а вы его угадываете, делая свои попытки. Когда я еще мог хорошо соображать, я мог угадывать числа максимум за 6 ходов. Сейчас сноровка уже далеко не та..

Слова – разновидность игры «Быки и коровы». Здесь комп загадывает не число, а 4-буквенное слово. Правила те же, что и в обычных Быках..

Девяточка – наверняка многие (бывшие) студенты потратили время не на одной паре, играя в эту игру. Правила простые. Изначально подряд записаны все числа от 1 до 19, кроме 10, по одной цифре в клетке. Можно зачеркивать либо рядом стоящие (только по вертикали или горизонтали) одинаковые цифры, либо две цифры, дающие в сумме 10. Когда все, что хотели, зачеркнули, переписываете оставшиеся цифры дальше, заполняя лист. Цель игры – сделать так, чтобы ВСЕ цифры оказались зачеркнуты. В файле роль ручки играет заливка ячейки черным цветом.

Наживка: игру можно закончить за один цикл :) (граница цикла помечена пурпурными клетками)



Реверси – здесь была попытка реализовать игру с AI. Т.к соответствующих знаний у меня не было и нет, то алгоритм, конечно хреновенький, скорее всего комп не сможет выиграть у вас ни одного раза.. Правила игры писать не буду, если их не знаете, то с легкостью найдете в сети. Играть просто - на своем ходе вбиваете координаты ячейки, куда хотите сходить, потом смотрите на ход компа, затем снова ходите..

Наконец, 2 игры, где от вас практически ничего не зависит, а все зависит почти целиком и полностью от великого и ужасного рандома :)

Гонки – имитация автогонок, когда машинки ездят по кругу. До нажатия на кнопку «Погнали» вы можете поменять 3 параметра игры (они помечены комментарием «можно менять») – длина круга, сколько кругов длится гонка и предельное количество поломок, после которого машина выбывает из гонки.

После нажатия кнопки вас спросят о количестве участников от 1 до 10. Чем большее число вы введете, тем больше данных придется заносить. По каждому участнику нужно будет ввести имя, выбор шин на гонку, тип двигателя, тип коробки передач, тип бензина и тип дизеля (даже если двигатель бензиновый)) ). Все остальные места до десяти заполняются компами с рандомным выбором.

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

Итак, после того, как вы ввели все данные, гонка начнется, и вам предстоит лишь сидеть и наблюдать за перемещением вашей машины в топе гонки :) Чем больше ваши введенные параметры подходят под тип трассы и погоду, тем меньше количество поломок будет получать ваша машина и выше будет ее скорость. При получении машиной в течение одного круга предельного количества поломок она выбывает из гонок, если же она смогла добраться до пит-стопа, то потратит там время в секундах, равное количеству поломок. Вот и все правила :)

ЧМ – имитатор футбольных матчей :). Сами понимаете, создать в Excel фифу-2015 довольно сложно, поэтому не судите строго. Программа написана и проверялась в работе только в Excel 2007.

На листе «команды» список команд, участвующих в турнире, с перечнем характеристик команд. Числовые параметры можно менять как угодно, главное чтоб они были положительными. Добавление новых команд невозможно. Названия команд можно менять. После изменений идете на лист «game», выбираете из выпадающих списков 2 команды и нажимаете «play». При выборе команд характеристики не меняются, уж извиняйте :) Только после нажатия кнопки запуска игры. На листе полно служебной информации, но нас будет интересовать только количество пройденного времени и счет игры. У меня в те времена было полно свободного времени, так что я даже устраивал виртуальные чемпионаты, используя сетки на листах «сетка» и «сетка 2й тур».

В игре, по сути, вы только определяете характеристики команд. Все остальное на себя берет его величество случай. В зависимости от характеристик команд, каждая из них имеет свой шанс забить или пропустить гол, коэффициент усталости и боевого духа, которые меняются на протяжении всей игры. Игра реализуется 10-минутными циклами, после которого происходит расчет всех показателей, меняется счет и запускается следующий цикл. И так, пока не пройдут все 90 минут матча. Время, конечно же, виртуальное :) Реально одна игра займет 5-10 секунд.

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

Бонус: в качестве бесплатного бонуса в папке FTW находится 2 файла. Работают они под 2007 Excel. Файл FTW нужен для того, чтобы вы могли передохнуть от работы, пока системщики и ваш босс делают недоуменные глаза от того, что все навигационные клавиши в Excel перестали работать и вы с чистой совестью можете испить чашку кофе или выйти на перекур. Ну а когда решитесь вновь вернуться на свое рабочее место, нажмите на кнопку в другом файле и все восстановится :)

Ссылка на файл в комментах.

Всем удачи и котят!