Как вернуть телефон по гарантии. Как вернуть телефон по гарантии и получить деньги

26.02.2019

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

Как создать игру на телефон онлайн?

Для начала определимся, какого плана игру вы хотите создать. Одно дело, если вам нужна простенькая игрушка типа обычной платформенной "стрелялки" или несложных гонок, и совсем другое, если вы планируете какой-нибудь оригинальный симулятор или менеджер. В первом случае можно даже обойтись и без специальных знаний, так как имеются специальные конструкторы игр для мобильных телефонов, в которых может создавать типовые игры любой желающий. Во втором случае вам для начала придется выучить Java - язык программирования, на котором пишутся практически все приложения для мобильных телефонов. Причем, изучить его придется досконально, и разбираться в нем нужно на профессиональном уровне. Если у вас есть такое желание, то в соответствующей главе мы опишем проблемы, с которыми сталкивается любой начинающий (и не только) программист игр для мобильных устройств. А начнем мы с самого простого - с конструкторов.

Конструкторы игр - свобода в ограниченном пространстве

"Почему в ограниченном пространстве?" - спросите вы. Потому что любой конструктор игр позволит вам создать лишь типовой продукт с теми или иными вариациями, а для создания хотя бы в чем-то оригинальной игры потребуется знание основ языка Java. Конструктор игр для мобильных телефонов представляет собой специальную программу, позволяющую создавать двухмерные игры в различных жанрах, и прекрасно подходит для того, чтобы создать игру на телефоне бесплатно. Это могут быть аркадные и платформенные "бродилки" и "стрелялки", простые спортивные и гоночные симуляторы. Как правило, в таком конструкторе игры создаются из различных блоков. Что это значит? Это значит, что отдельно выбирается графика, отдельно - логическая или математическая модель игры, а уже затем происходит их слияние с помощью интерфейса конструктора. То есть создание игры, по сути, представляет собой загрузку готовых шаблонов и их совмещение. Понятно, что, несмотря на разнообразие вариантов, подлинной свободы при создании игры в конструкторе нет и быть не может. А тем, кто хочет большего, мы расскажем, с чем им придется столкнуться при создании собственной полноценной игры.

Трудности, с которыми придется столкнуться

Прежде всего, как мы уже говорили, вам нужно освоить на приемлемом уровне язык Java - это необходимый минимум для создания любого приложения для мобильных устройств. Без знания родного языка вы не сможете общаться, без знания Java – писать игры. Допустим, вы изучили основные конструкции этого языка. Самые главные трудности, с которыми вам придется столкнуться при создании игры, будет учет аппаратных возможностей мобильных устройств, а также отладка игры на данных мобильных устройствах. Поскольку одно дело "прогонять" игру в специальной программе на компьютере, и совсем другое - попробовать поиграть в нее на мобильном устройстве. Поверьте - здесь остро возникнет вопрос экономии ресурсов, особенно если речь зайдет о 3D-играх. Ну и, конечно, чтобы создать не просто поделку для своих нужд, а игру продаваемую, нужно учитывать и запросы пользователей, то есть играть в игру должно быть интересно, иначе она никому не будет нужна. Я уж не говорю о том, чтобы создать игру на телефон онлайн - с возможностью играть по сети. Речь в статье идет об игре в обычном режиме, так называемой, автономной игре.

Этапы создания автономной игры

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

Как только базовая модель готова, приступаем ко второму этапу - реализации игры. Этот этап представляет собой графическое наполнение модели. Надо сказать, что этап реализации нередко отнимает гораздо больше времени, чем создание основы или движка. И вот, после долгих мучений, мы получаем, наконец, готовую модель игры. Думаете, все? Как бы ни так! Теперь мы многократно тестируем модель и выявляем, что работает не так, а затем правим это в программном коде. Возможно, вы захотите что-то убрать, что-то добавить, что-то поменять. В этом и заключается третий этап - оптимизация игры. Желание создать оригинальную игру у вас еще не отпало? Что ж, тогда желаю удачи!

Статьи и Лайфхаки

Наверняка вопрос о том, как сделать игру на телефон , волнует многих пользователей мобильной сети (аналогично вопросу ). Телефонный аппарат давно уже перестал быть обычным способом связи, и стал неотъемлемой частью жизни каждого современного человека. Конечно, обычно над созданием игр трудятся квалифицированные специалисты известных компаний-разработчиков. Можно ли создать игру самостоятельно, и если да, то как?

Делаем игру на телефон: задумка и обучение

Итак, ответ на вопрос является утвердительным. Изначально будущему разработчику следует определиться с операционной системой мобильного телефона, на которую будет рассчитана его игра. На сегодняшний день не существует такой мобильной платформы, которой бы пользователи отдавали наибольшее предпочтение – как это происходит, к примеру, в мире персональных компьютеров, где «пальма первенства» принадлежит Windows. Каждый из производителей готов предложить нечто эксклюзивное, и в итоге рынок заполнен десятками операционных систем. Наиболее популярными можно назвать Windows Phone 7, Android, iOs и Symbian OS. Для начала придётся заняться разработкой игры для конкретной платформы, а уж потом можно попытаться подстроить приложение и под другие системы. Вопрос о том, как сделать игру на телефон, требует самого смелого и творческого подхода, поскольку иногда различие между ОС оказывается очень существенным.

Естественно, каждый вдумчивый творческий процесс (особенно если это касается программирования) требует предварительного обучения, которое порой может затянуться на недели, а то месяцы и годы. Очевидно, что уровень профессионализма специалиста прямо пропорционален успеху будущей игры. Поэтому начать придётся с обучения языку программирования. Стоит отметить, что идеальным вариантом станет язык Java. В большинстве случаев новички с трудом постигают его азы, поэтому начать им придётся с основ школьной программы курса информатики.

Важнейшим этапом является формирование идеи будущей игры, которая может, в принципе, и предшествовать обучению. Однако по мере освоения Java пользователю будет легче изложить свои намерения в специальном документе, продумать концепцию игры, одновременно обдумывая всё с точки зрения логики и вспоминая важнейшие знания и литературу по программированию.

Делаем игру на телефон: разработка и тестирование

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

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

Что касается непосредственно выпуска игры, тут уже личное дело каждого. Её можно сделать платной или бесплатной, а ещё лучше – найти спонсора, согласного отдать за игру неплохие деньги.

Многие люди, скачивая игры для мобильных платформ, задумываются: "А почему бы не воплотить мечту в реальность? Почему бы не сделать свой продукт, который будет лучше и интереснее того, что уже предлагает индустрия интерактивных развлечений?" Если вы не знаете, как создавать игры на "Андроид", но хотите научиться, эта статья расскажет о некоторых подводных камнях, которые поджидают начинающих девелоперов.

Идея

Первое, что требуется для создания игры - идея. На первом этапе ее можно записать в любом виде. Желательно, чтобы она "цепляла" и была понятна. Вероятнее всего, в процессе воплощения она будет изменена. Что-то придется добавить, а что-то - полностью убрать или переделать. В этом нет ничего странного - при дальнейшей проработке деталей функционал не только придется досконально описать, но и проверить его на пригодность.

Не стоит полностью отказываться от первичного описания идеи и начинать создавать русские игры на "Андроид", пропустив эту стадию. Сбор мыслей - главная точка старта, из которой легче всего начинать движение. К тому же идеи, изложенные на бумаге, позволят взглянуть на задуманное объективнее, возможно, заранее отметить и исправить слабые места.

Список особенностей

Так как создавать игры на "Андроид" невозможно без их детальной проработки, на данном этапе придется продолжить работу в и описать особенности, которые будут в игре. Приведем пример: серия God of War - это слэшер. Оружие главного героя - кнут. Во время боя можно делать длинные красивые комбо-атаки. Каждый уровень завершается схваткой с боссом.

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

Диздок

Так как создать новую игру без этого документа почти невозможно, придется поработать и над ним. Диздок - сокращение от "дизайн-документ", он включает в себя максимально детальные описания:

  • Объектной модели и функциональности сущностей.
  • Функциональных спецификаций.
  • Контента игры.
  • Интерфейса.
  • По необходимости может быть добавлена база знаний.
  • Объектная модель.

Объектная модель

Объектная модель заключает в себе информацию о каждой игровой сущности: оружие, броня, NPC, заклинания, игрок. Она уникальна для каждой игры.

Под функциональностью следует понимать:

  • Можно ли надеть\снять\купить\продать\улучшить.
  • Останется ли в инвентаре после смерти.
  • Потеряет ли прочность с течением времени либо при каком-нибудь действии.
  • Повышает ли характеристики персонажа или группы.
  • Имеет ли набор особых свойств.

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

Функциональные спецификации

В продолжение ответа на вопрос о том, как создавать игры для "Андроид", следует рассказать о следующем разделе диздока. Функциональные спецификации описывают геймплей поштучно. Здесь нужно максимально точно рассказать, что умеет делать главный герой и как это реализуется. То же самое нужно сделать и для каждого NPC отдельно. Помимо игровых персонажей, следует затронуть аптечки, оружие, броню, элементы окружения.

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

Контент

До того как создать хорошую игру, необходимо продумать и то, что именно будет в ней. Описывая спецификации, можно указать, что персонажи будут стрелять из огнестрельного оружия, в которое заряжены патроны с жестко фиксированным уроном. При попадании в NPC из этого параметра будет вычитаться мощность брони. Также нужно будет указать название каждого отдельно взятого образца оружия, брони, NPC. И, конечно, необходимо описать Контент - это кирпичики, из которых впоследствии будет построена вся игра.

Интерфейс

Интерфейс - это набор функций и кнопок, при помощи которых пользователь будет взаимодействовать с программой. Главное, что следует учитывать при его создании - удобство. Чтобы понять, как именно организовать все элементы, можно запустить и проанализировать лучшие образцы жанра, перенеся наиболее подходящие решения в свой проект.

Выбор движка или конструктора

Еще один шаг, который придется выполнить до того, как создавать игры на "Андроид", - выбрать Давно прошли те времена, когда всё необходимо было делать с нуля. Сегодня, взяв готовый конструктор, можно выполнить все работы, написав минимум кода.

Выбор движка стоит делать, основываясь на некоторых его особенностях:

  • Условия использования.
  • Возможности.
  • Цена.
  • Поддержка разработчиками.
  • Задокументированность.
  • Размер комьюнити.
  • Простота.
  • Расширяемость.

Условия использования : возможно, один раз купив конструктор, вы не станете его полноправным владельцем. Бывает, что при коммерческом успехе игры приходится выплачивать процент от прибылей разработчикам движка. Главное - перед тем как создавать игры на "Андроид", ознакомьтесь с продукта, выбранного для реализации.

Возможности : они должны полностью перекрывать потребности разработчика. Если же продукт предлагает больше, чем нужно, игру можно будет легко расширить, задействовать новые функции диздока. Но задумайтесь и о балансе! Использовать Unreal Engine для тетриса - глупо.

Поддержка : в первую очередь, важно выяснить, имеет ли продукт развитие? Исправляются ли ошибки от версии к версии? Обрастает ли он новым функционалом и инструментарием? Движок, который быстро развивается, имеет преимущество перед движком, замороженным несколько лет назад.

Комьюнити : каково число тех, кто использует конструктор? Если пользователей большое количество, найти документацию, уроки, мастер-классы, примеры не является проблемой. Если же пользователей сравнительно мало, эта информация может быть доступна не в том объеме, который позволит вам сделать что-то конкурентоспособное.

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

UDK

Unreal Development Kit - не самый простой в освоении игровой движок, но зато один из самых мощных. Его используют не только начинающие разработчики, но и крупные корпорации. Если вы ищете ответ на вопрос: "Как создать 3Д-игру и какой движок для этого выбрать?" - вам стоит изучить возможности UDK.

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

Torque 2D/3D

Torque - один из самых популярных конструкторов игр для мобильных платформ. Обладает всем необходимым набором редакторов и средств отладки. При разработке программисты уделили большое внимание удобству и старались сделать все утилиты наиболее простыми и доступными.

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

Для написания скриптов в Torque встроен язык Torque Script. Свойства каждого объекта могут быть определены заранее. Также в конструктор встроен набор Box2D, который занимается физическими расчетами.

Если вы пытаетесь найти ответ на вопрос: "Как создать и какой движок для этого выбрать?" - можно смело заявить, что Torque позволит сделать мультиплеерный проект в сжатые сроки. Весь необходимый функционал встроен заранее, а примеры, находящиеся на официальном сайте, покажут, как его использовать наиболее рационально.

Изучение

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

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

Работа в любой компании начинается снизу, это нормально. Да и навыки скриптера, левел-дизайнера, балансировщика, тестера будут весьма полезны, а это именно те отрасли, в которых трудится большинство юниоров. Через несколько лет подобных занятий можно будет научиться создавать диздоки и технические задания, узнать о багтрекерах и сформировать базу контактов. После проделанной работы, для того чтобы создать русские игры на "Андроид", потребуется потратить намного меньше сил, потому что вы запасетесь всеми нужными навыками и умениями.

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

Этот туториал предназначен в первую очередь для новичков в разработке под андроид, но может быть будет полезен и более опытным разработчикам. Тут рассказано как создать простейшую 2D игру на анроиде без использования каких-либо игровых движков. Для этого я использовал Android Studio, но можно использовать любую другую соответствующее настроенную среду разработки.

Шаг 1. Придумываем идею игры
Для примера возьмём довольно простую идею:

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


Шаг 2. Создаём проект
В Android Studio в верхнем меню выбираем File → New → New Project.

Тут вводим название приложения, домен и путь. Нажимаем Next.

Тут можно ввести версию андроид. Также можно выбрать андроид часы и телевизор. Но я не уверен что наше приложение на всём этом будет работать. Так что лучше введите всё как на скриншоте. Нажимаем Next.

Тут обязательно выбираем Empty Activity. И жмём Next.

Тут оставляем всё как есть и жмём Finish. Итак проект создан. Переходим ко третьему шагу.

Шаг 3. Добавляем картинки

Шаг 5. Редактируем MainActivity класс

В первую очередь в определение класса добавляем implements View.OnTouchListener. Определение класса теперь будет таким:

Public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
Добавим в класс нужные нам статические переменные (переменные класса):

Public static boolean isLeftPressed = false; // нажата левая кнопка public static boolean isRightPressed = false; // нажата правая кнопка
В процедуру protected void onCreate(Bundle savedInstanceState) {
добавляем строки:

GameView gameView = new GameView(this); // создаём gameView LinearLayout gameLayout = (LinearLayout) findViewById(R.id.gameLayout); // находим gameLayout gameLayout.addView(gameView); // и добавляем в него gameView Button leftButton = (Button) findViewById(R.id.leftButton); // находим кнопки Button rightButton = (Button) findViewById(R.id.rightButton); leftButton.setOnTouchListener(this); // и добавляем этот класс как слушателя (при нажатии сработает onTouch) rightButton.setOnTouchListener(this);
Классы LinearLayout, Button и т.д. подсвечены красным потому что ещё не добавлены в Import.
Чтобы добавить в Import и убрать красную подсветку нужно для каждого нажать Alt+Enter.
GameView будет подсвечено красным потому-что этого класса ещё нет. Мы создадим его позже.

Теперь добавляем процедуру:

Public boolean onTouch(View button, MotionEvent motion) { switch(button.getId()) { // определяем какая кнопка case R.id.leftButton: switch (motion.getAction()) { // определяем нажата или отпущена case MotionEvent.ACTION_DOWN: isLeftPressed = true; break; case MotionEvent.ACTION_UP: isLeftPressed = false; break; } break; case R.id.rightButton: switch (motion.getAction()) { // определяем нажата или отпущена case MotionEvent.ACTION_DOWN: isRightPressed = true; break; case MotionEvent.ACTION_UP: isRightPressed = false; break; } break; } return true; }
Если кто-то запутался ― вот так в результате должен выглядеть MainActivity класс:

Package com.spaceavoider.spaceavoider; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity implements View.OnTouchListener { public static boolean isLeftPressed = false; // нажата левая кнопка public static boolean isRightPressed = false; // нажата правая кнопка @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GameView gameView = new GameView(this); // создаём gameView LinearLayout gameLayout = (LinearLayout) findViewById(R.id.gameLayout); // находим gameLayout gameLayout.addView(gameView); // и добавляем в него gameView Button leftButton = (Button) findViewById(R.id.leftButton); // находим кнопки Button rightButton = (Button) findViewById(R.id.rightButton); leftButton.setOnTouchListener(this); // и добавляем этот класс как слушателя (при нажатии сработает onTouch) rightButton.setOnTouchListener(this); } public boolean onTouch(View button, MotionEvent motion) { switch(button.getId()) { // определяем какая кнопка case R.id.leftButton: switch (motion.getAction()) { // определяем нажата или отпущена case MotionEvent.ACTION_DOWN: isLeftPressed = true; break; case MotionEvent.ACTION_UP: isLeftPressed = false; break; } break; case R.id.rightButton: switch (motion.getAction()) { // определяем нажата или отпущена case MotionEvent.ACTION_DOWN: isRightPressed = true; break; case MotionEvent.ACTION_UP: isRightPressed = false; break; } break; } return true; } }
Итак, класс MainActivity готов! В нём инициирован ещё не созданный класс GameView. И когда нажата левая кнопка - статическая переменная isLeftPressed = true, а когда правая - isRightPressed = true. Это в общем то и всё что он делает.

Для начала сделаем чтобы на экране отображался космический корабль, и чтобы он двигался по нажатию управляющих кнопок. Астероиды оставим на потом.

Шаг 6. Создаём класс GameView

Теперь наконец-то создадим тот самый недостающий класс GameView. Итак приступим. В определение класса добавим extends SurfaceView implements Runnable. Мобильные устройства имею разные разрешения экрана. Это может быть старенький маленький телефон с разрешением 480x800, или большой планшет 1800x2560. Для того чтобы игра выглядела на всех устройствах одинаково я поделил экран на 20 частей по горизонтали и 28 по вертикали. Полученную единицу измерения я назвал юнит. Можно выбрать и другие числа. Главное чтобы отношение между ними примерно сохранялось, иначе изображение будет вытянутым или сжатым.

Public static int maxX = 20; // размер по горизонтали public static int maxY = 28; // размер по вертикали public static float unitW = 0; // пикселей в юните по горизонтали public static float unitH = 0; // пикселей в юните по вертикали
unitW и unitW мы вычислим позже. Также нам понадобятся и другие переменные:

Private boolean firstTime = true; private boolean gameRunning = true; private Ship ship; private Thread gameThread = null; private Paint paint; private Canvas canvas; private SurfaceHolder surfaceHolder;
Конструктор будет таким:

Public GameView(Context context) { super(context); //инициализируем обьекты для рисования surfaceHolder = getHolder(); paint = new Paint(); // инициализируем поток gameThread = new Thread(this); gameThread.start(); }
Метод run() будет содержать бесконечный цикл. В начале цикла выполняется метод update()
который будет вычислять новые координаты корабля. Потом метод draw() рисует корабль на экране. И в конце метод control() сделает паузу на 17 миллисекунд. Через 17 миллисекунд run() запустится снова. И так до пока переменная gameRunning == true. Вот эти методы:

@Override public void run() { while (gameRunning) { update(); draw(); control(); } } private void update() { if(!firstTime) { ship.update(); } } private void draw() { if (surfaceHolder.getSurface().isValid()) { //проверяем валидный ли surface if(firstTime){ // инициализация при первом запуске firstTime = false; unitW = surfaceHolder.getSurfaceFrame().width()/maxX; // вычисляем число пикселей в юните unitH = surfaceHolder.getSurfaceFrame().height()/maxY; ship = new Ship(getContext()); // добавляем корабль } canvas = surfaceHolder.lockCanvas(); // закрываем canvas canvas.drawColor(Color.BLACK); // заполняем фон чёрным ship.drow(paint, canvas); // рисуем корабль surfaceHolder.unlockCanvasAndPost(canvas); // открываем canvas } } private void control() { // пауза на 17 миллисекунд try { gameThread.sleep(17); } catch (InterruptedException e) { e.printStackTrace(); } }
Обратите внимание на инициализацию при первом запуске. Там мы вычисляем количество пикселей в юните и добавляем корабль. Корабль мы ещё не создали. Но прежде мы создадим его родительский класс.

Шаг 7. Создаём класс SpaceBody

Он будет родительским для класса Ship (космический корабль) и Asteroid (астероид). В нём будут содержаться все переменные и методы общие для этих двух классов. Добавляем переменные:

Protected float x; // координаты protected float y; protected float size; // размер protected float speed; // скорость protected int bitmapId; // id картинки protected Bitmap bitmap; // картинка
и методы

Void init(Context context) { // сжимаем картинку до нужных размеров Bitmap cBitmap = BitmapFactory.decodeResource(context.getResources(), bitmapId); bitmap = Bitmap.createScaledBitmap(cBitmap, (int)(size * GameView.unitW), (int)(size * GameView.unitH), false); cBitmap.recycle(); } void update(){ // тут будут вычисляться новые координаты } void drow(Paint paint, Canvas canvas){ // рисуем картинку canvas.drawBitmap(bitmap, x*GameView.unitW, y*GameView.unitH, paint); }
Шаг 8. Создаём класс Ship

Теперь создадим класс Ship (космический корабль). Он наследует класс SpaceBody поэтому в определение класа добавим extends SpaceBody.

Напишем конструктор:

Public Ship(Context context) { bitmapId = R.drawable.ship; // определяем начальные параметры size = 5; x=7; y=GameView.maxY - size - 1; speed = (float) 0.2; init(context); // инициализируем корабль }
и переопределим метод update()

@Override public void update() { // перемещаем корабль в зависимости от нажатой кнопки if(MainActivity.isLeftPressed && x >= 0){ x -= speed; } if(MainActivity.isRightPressed && x <= GameView.maxX - 5){ x += speed; } }
На этом космический корабль готов! Всё компилируем и запускаем. На экране должен появиться космический корабль. При нажатии на кнопки он должен двигаться вправо и влево. Теперь добавляем сыплющиеся сверху астероиды. При столкновении с кораблём игра заканчивается.

Шаг 9. Создаём класс Asteroid

Добавим класс Asteroid (астероид). Он тоже наследует класс SpaceBody поэтому в определение класса добавим extends SpaceBody.

Добавим нужные нам переменные:

Private int radius = 2; // радиус private float minSpeed = (float) 0.1; // минимальная скорость private float maxSpeed = (float) 0.5; // максимальная скорость
Астероид должен появляться в случайной точке вверху экрана и лететь вниз с случайной скоростью. Для этого x и speed задаются при помощи генератора случайных чисел в его конструкторе.

Public Asteroid(Context context) { Random random = new Random(); bitmapId = R.drawable.asteroid; y=0; x = random.nextInt(GameView.maxX) - radius; size = radius*2; speed = minSpeed + (maxSpeed - minSpeed) * random.nextFloat(); init(context); }
Астероид должен двигаться с определённой скорость вертикально вниз. Поэтому в методе update() прибавляем к координате x скорость.

@Override public void update() { y += speed; }
Так же нам нужен будет метод определяющий столкнулся ли астероид с кораблём.

Public boolean isCollision(float shipX, float shipY, float shipSize) { return !(((x+size) < shipX)||(x > (shipX+shipSize))||((y+size) < shipY)||(y > (shipY+shipSize))); }
Рассмотрим его поподробнее. Для простоты считаем корабль и астероид квадратами. Тут я пошёл от противного. То есть определяю когда квадраты НЕ пересекаются.

((x+size) < shipX) - корабль слева от астероида.
(x > (shipX+shipSize)) - корабль справа от астероида.
((y+size) < shipY) - корабль сверху астероида.
(y > (shipY+shipSize)) - корабль снизу астероида.

Между этими четырьмя выражениями стоит || (или). То есть если хоть одно выражение правдиво (а это значит что квадраты НЕ пересекаются) - результирующие тоже правдиво.

Всё это выражение я инвертирую знаком!. В результате метод возвращает true когда квадраты пересекаются. Что нам и надо.

Про определение пересечения более сложных фигур можно почитать .

Шаг 10. Добавляем астероиды в GameView

В GameView добавляем переменные:

Private ArrayList asteroids = new ArrayList<>(); // тут будут харанится астероиды private final int ASTEROID_INTERVAL = 50; // время через которое появляются астероиды (в итерациях) private int currentTime = 0;
также добавляем 2 метода:

Private void checkCollision(){ // перебираем все астероиды и проверяем не касается ли один из них корабля for (Asteroid asteroid: asteroids) { if(asteroid.isCollision(ship.x, ship.y, ship.size)){ // игрок проиграл gameRunning = false; // останавливаем игру // TODO добавить анимацию взрыва } } } private void checkIfNewAsteroid(){ // каждые 50 итераций добавляем новый астероид if(currentTime >= ASTEROID_INTERVAL){ Asteroid asteroid = new Asteroid(getContext()); asteroids.add(asteroid); currentTime = 0; }else{ currentTime ++; } }
И в методе run() добавляем вызовы этих методов перед вызовоом control().

@Override public void run() { while (gameRunning) { update(); draw(); checkCollision(); checkIfNewAsteroid(); control(); } }
Далее в методе update() добавляем цикл который перебирает все астероиды и вызывает у них метод update().

Private void update() { if(!firstTime) { ship.update(); for (Asteroid asteroid: asteroids) { asteroid.update(); } } }
Такой же цикл добавляем и в метод draw().

Private void draw() { if (surfaceHolder.getSurface().isValid()) { //проверяем валидный ли surface if(firstTime){ // инициализация при первом запуске firstTime = false; unitW = surfaceHolder.getSurfaceFrame().width()/maxX; // вычисляем число пикселей в юните unitH = surfaceHolder.getSurfaceFrame().height()/maxY; ship = new Ship(getContext()); // добавляем корабль } canvas = surfaceHolder.lockCanvas(); // закрываем canvas canvas.drawColor(Color.BLACK); // заполняем фон чёрным ship.drow(paint, canvas); // рисуем корабль for(Asteroid asteroid: asteroids){ // рисуем астероиды asteroid.drow(paint, canvas); } surfaceHolder.unlockCanvasAndPost(canvas); // открываем canvas } }
Вот и всё! Простейшая 2D игра готова. Компилируем, запускаем и смотрим что получилось!
Если кто-то запутался или что-то не работает можно скачать исходник .

Игра, конечно, примитивна. Но её можно усовершенствовать, добавив новые функции. В первую очередь следует реализовать удаление вылетевших за пределы экрана астероидов. Можно сделать чтобы корабль мог стрелять в астероиды, чтобы игра постепенно ускорялась, добавить таймер, таблицу рекордов и прочее. Если это будет вам интересно - напишу продолжение, где всё это опишу.

На этом всё. Пишите отзывы, вопросы, интересующие вас темы для продолжения.

Теги:

Добавить метки

В наше время очень сложно найти человека, который не играл в мобильные игры, вспомните хотя бы классическую «Змейку». Но приходила ли вам в голову мысль создать свою игру, в которой будут ваши собственные герои, придуманные только вами?

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

  • Вам необходимо продумать сценарий, возможно даже написать его, показать знакомым или семье. Ведь смысл начинать создание, если еще нет сюжета?
  • Сразу хочу отметить, что создание игры без навыков программирования довольно длительный, сложный и нудный процесс. Хотя, при знании последнего ничего особо не изменится, процесс веселее не станет. Наберитесь терпения!
  • И наконец-то, потребуется программное обеспечение, а точнее конструктор игр, возможно даже не один. Какой именно выбрать, я расскажу ниже.

Что такое конструктор и как его правильно выбрать?

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

Как правильно выбрать конструктор? Как ни странно, но начинать его выбор нужно ориентируясь в первую очередь на свои знания – от навыков программирования до уровня владения английским языком. Если первый пункт у вас нулевой, то рекомендую выбрать программы для новичков, они проще в использовании. Второй критерий выбора – требуемый функционал. Здесь-то нам и потребуется наш точно составленный сценарий, его нужно еще раз прочитать «от корки до корки» и понять насколько сложной будет будущая игра. Чем сложнее проект, тем больше всяких «примочек» нужно будет использовать, а значит и конструктор должен быть мощнее и профессиональнее.

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

Construct 2

Данное приложение уже много лет подряд заслуженно входит в ТОП списока программ-конструкторов, ведь оно дает возможность создания игр практический на все возможные платформы и во всех жанрах. Интерфейс Construct максимально прост, но русификации пока нет. Набор инструментов достаточный для создания любой двухмерной игры. Еще одним плюсом является то, что необязательно покупать лицензию программы, вы вполне можете обойтись функционалом, который предложен в бесплатной версии.

Скачать : Construct 2
Видео уроки по Construct 2

Stencyl

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

К тому же, если вы все-таки владеете хоть какими-то знаниями в области программирования, то Stencyl предоставит вам возможность вписать в блоки свой собственный код. Набор инструментов позволит создавать игры практически любого жанра, однако функционал больше настроен на создание «шутеров».

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

Скачать : Stencyl
Видео уроки по Stencyl

Unity 3D

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

Unity 3D является самым мощным конструктором для создания 3D приложений. Уровень, на который вы сможете вывести свой проект достойный (взгляните только на скриншот выше). Это не обработанное изображение, а реальный снимок экрана еще не законченной игры! Согласитесь, как для мобильной игры это очень высокий уровень.

Но такой результат потребует уже и определенных навыков. Хоть программа и позиционируется как приложение для новичков, но она скорее больше рассчитана на любителей и профессионалов, ведь для работы с ней потребуются базовые знания программирования и 3D-моделирования. Ну и конечно же, в Unity вы сможете создать проект любой сложности и любого жанра, набор инструментов просто огромен.

Скачать : Unity 3D
Видео уроки по Unity 3D

Как же пользоваться конструкторами?

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

Когда вы сделаете «пробный» проект и точно определитесь со своим, выберете программу, то ищите в интернете видеоролики именно о конструкторе, который вы будете использовать.

Не бойтесь экспериментировать, ищите информацию в Интернете и пробуйте. Только так вы будете учиться и развиваться. Удачи в создании своего шедевра.