Сказ о том, как я гугловского динозаврика в стиле игр Nokia 3310 делал (C#, Windows Forms)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

“Небольшая” предыстория

С началом июля я начал думать, какую игрушку можно ещё сделать, и идея мне пришла после видеоролика с канала Кирилл Лейфер, в котором он прошивал и пытался написать игру под “легендарный” и достаточно мемный в своём роде телефон Nokia 3310. С данным телефоном я и сам сталкивался в возрасте 6 лет)) Помню, что поиграл на нём в Змейку, поделал что-то ещё и суммарно я использовал данный аппарат около суток и больше к нему не притрагивался. В общем, я решил написать игру на C# в стиле игр 3310, во всё том же ролике я наткнулся на NOKIA 3310 JAM 5, где можно было узнать, какие параметры нужны для создания игры в стиле Нокии. Там я нашёл точную палитру, про то, что звуки должны быть монофоническими (просто моно). Как-то так, ну а теперь приступим к деталям :)

На чём писалась игра?

Писалось и билдилось всё в Microsoft Visual Studio Express 2012 (соответственно на версии C# 5.0).

Откуда брались спрайты и звуки для игры?

Спрайты были взяты у пользователя с ником wayou с его GitHub репозитория.

Игровые звуки брались с данного сайта.

Звук при запуске игры брался с данного видео.

Немного про игровые ресурсы

Все спрайты, гифки и звуки для игры находятся в папке resources, а путь к ним прописан в методе Form1_Load, что, как по мне, позволяет очень легко модифицировать игру посредством замены файлов и звуков на совершенно другие (например, вы можете вместо спрайта динозаврика поставить спрайт Марио и т.п.).

Имитация “живого мира” в игре

Как только я создал проект, я начал думать, как можно сделать якобы “живой мир” вокруг игрока, моей задачей было заставить облака парить) Для этого я использовал два timer’a (skyTimer1 и skyTimer2). Когда первый timer дойдёт до конца, запуститься второй и пока второй timer тикает, облака перемещаются влево по координате X:

Далее в skyTimer2_Tick ставится условие:

Здесь облака возвращаются в свою исходную позицию и вновь начинают своё движение влево, и так по сути до бесконечности.

Про движение кактусов и птеродактиля

У нас есть спрайты кактусов (два вида) и птеродактиля в двух положениях (летит снизу или сверху). Для их появления используется cactusTimer1, который при каждом своём повторном тиканье выбирает через random, какой из 4-х спрайтов появится:

cactusTimer2 отвечает за движение спрайтов, позиция объекта cactus перемещается влево по координате X:

В этом таймере также прописан зов Intersect(), который перенаправляет нас на метод Intersect, который отвечает за столкновение со спрайтами :))

Создание прыжка и приседания/поднимания игрока

Для создания всех этих действий был задействован метод KeyDown, который отвечает за нажатие клавиш. Прыжок был забит на клавишу Space, а приседание/поднимание на стрелку вниз/стрелку вверх соответственно:

С прыжком игрока дела обстоят так: включается таймер, когда таймер закончит тикать – игрок вернётся в исходное положение, а именно (80, 104).

Главное меню также выполнено посредством метода KeyDown, так что думаю, заострять на нём внимания нету смысла.

Как реализованы звуки в игре?

Дабы реализовать звуки, я использовал библиотеку WMPLib (или же Windows Media Player Library).

Ну а на этом думаю, стоит закончить данную статью. Потыкать исходный код игры или скачать уже собранную версию вы сможете на GitHub.

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

Источник: https://habr.com/ru/articles/750994/


Интересные статьи

Интересные статьи

Разработка собственной Kubernetes-платформы — большой и сложный проект со множеством взаимодействующих компонентов. В процессе неизбежно сталкиваешься с различными трудностями. Иногда их даже соз...
Привет! Меня зовут Сергей Топунов, я фронт-разработчик в SM Lab. Недавно мы сделали редизайн одной из наших внутренних систем, о чем я и хочу вам сегодня рассказать.    «Оценка вкл...
Большая боль разработчиков, которые приходят на новый проект — для развертывания сервиса локально нужно пообщаться минимум с десятком людей, не говоря уже про интеграцию с CI/CD-сервером. В один момен...
Перевоплощаться способны не только люди, но и идеи.Старая идея Ньютона о возможности рассчитать будущее механической системы обрела новую жизнь, перевоплотившись в идею о возможности рассчитывать чело...
До 2016 года получить доступ к квантовым устройствам было непросто. Теоретикам квантовых вычислений приходилось убеждать исследователей аппаратных средств в необходимости проводить экспер...