Здесь будет появляться решение некоторых задач для Андроид.
There will appear a solution of some problems for Android.
воскресенье, 15 ноября 2015 г.
Спрайты и работа с ними
Пишем игру под Андроид
Часто
в игре нужно создать объект, который не только перемещается по экрану, но и сам
видоизменяется, например, шагающий человек или облако взрыва. Как правило, это
делается с помощью покадровой анимации. Суть метода в том, что быстро
показываются кадры меняющегося объекта, в результате чего наблюдатель не видит
отдельные кадры, только иллюзию меняющегося объекта. Изображения мы сохраняем в
формате png
с прозрачной основой, что позволяет накладывать изображение объекта на фоновую
основу, например, олененок (объект) скачет по дороге (фон).
В
нашей игре сначала мы создадим иллюзию вращающегося падающего астероида, а
потом анимацию взрыва после удара по базе.
Столкновения
в играх - это событие, которое должно
привести к другому событию. Например, в нашем случае, если астероид упадет на базу, то должен произойти
взрыв, раздаться звук взрыва и произойти изменения в самой картинке базы. Если
астероид упал мимо базы, можно ограничиться меньшим взрывом и его звуком.
Столкновение
внешне выглядит, как правило, в виде касания или перекрытия объектов, таким
образом, в коде мы должны будем сравнивать определенные координаты тел, и
делать выводы.
Координаты астероида меняются в методе updateкласса publicclassGameView.
Все разговоры о том, что игрушка вышла сложная - неправда! Я только что освободил тигра! Главное - научиться летать с ведром, когда словишь бело-синюю пилюлю! Смайлик «smile» Кстати, мы уже 29 в рейтинге! Animal Zoo
пятница, 25 сентября 2015 г.
За 2 дня мы поднялись с 132 места на 44! Спасибо всем, кто играет!
Статья пятая. Предварительные настройки и создание лунной
базы.
Вообще-то, планировалось отработать столкновение
астероида с базой, но тут я вспомнил, что у нас пока нет самой базы. Астероид
летает на голубом фоне, и сталкиваться ему пока не с чем.
Поэтому было решено создать две картинки лунной базы,
которые будут являться фоном.
Очень
важно, какой тип игры вы создаете. Так как у нас игра динамическая, нам нужно
всё время обновлять картинку на устройстве. Это значит сначала создать её,
применив новые координаты объектов, а затем вывести на экран. Наше зрение
устроено так, что если мы будем делать это меньше, чем за 0,04 с, то нам будет
казаться движение объектов непрерывным. Но объекты могут быть разными по
сложности прорисовки, а устройства, на которых вы играете – разными по
быстродействию. Может так случиться, что на одних планшетах или мобильниках наше
приложение будет «летать», так что пользователь не будет успевать играть, а на
других – будет тормозить и глючить так, что пользователь, скорей всего, удалит
её со своего устройства. Возникает мысль, проходить один игровой цикл за 0,04с
(25 кадров (циклов) в секунду) на всех устройствах. Всё было бы хорошо, если бы
все устройства могли это сделать. Представьте, что у вас 10 динамических
объектов в игре, которые взаимодействуют между собой, порождая новые объекты,
например, взрыв при столкновении, но надо не забыть воспроизводить звуки и
реагировать на включения пользователя в игру. Я уже не говорю о реалистичной
графике окружающего мира. Что же делать, если наше устройство не успевает в
какой-то сцене создать игровой цикл? Решений несколько. Советую вам хорошенько
проштудировать эту статью
Игровой цикл – это сердце любой игры, ни одна игра не может обойтись без него. Но, к сожалению, для начинающих программистов нет хороших статей, которые бы раскрыли эту тему на должном уровне. Но не переживайте, вы только что натолкнулись на статью, которая описывает игровой цикл так, как он этого заслуживает. Благодаря моей работе, как программиста игр, я просмотрел большое количество кода маленьких мобильных игр и всегда поражался, как реализован в них игровой цикл. Вы можете спросить себя, как такая простая вещь, как игровой цикл, может быть реализована по-разному. Однако такое возможно, и я буду обсуждать все за и против самых популярных реализаций, что даст вам (на мой взгляд) оптимальное решение реализации игрового цикла.
Часть третья. Установка кнопки с переходом на второе активити
Решим для себя, какую мы хотим видеть кнопку. Наша кнопка будет оригинальной и находиться по центру нижней части экрана на главном активити. При нажатии кнопка будет менять цвет и запустит переход на новое активити.
Мы отказались от стандартных кнопок Андроида, поэтому нужно иметь собственные изображения кнопки в нерабочем и нажатом состоянии. Я выбрал ненавязчивые кнопки, которые, как мне кажется, будут гармонировать с лунным пейзажем.
Теперь нужно решить проблему расположения кнопки. Она в том, что на разных экранах наша кнопка должна располагаться примерно в одном и том же месте относительно заднего фона. Я воспользовался методом разметки TableLayout. Фактически мы разобьем экран на 9 прозрачных ячеек (3 строки и 3 столбца). В 8 ячейку вставим изображение светлой кнопки.
Часть третья.
Установка кнопки с переходом на второе активити
Решим для себя, какую мы хотим
видеть кнопку. Наша кнопка будет оригинальной и находиться по центру нижней
части экрана на главном активити. При нажатии кнопка будет менять цвет и
запустит переход на новое активити.
Мы отказались от стандартных
кнопок Андроида, поэтому нужно иметь собственные изображения кнопки в нерабочем
и нажатом состоянии. Я выбрал ненавязчивые кнопки, которые, как мне кажется,
будут гармонировать с лунным пейзажем.
Теперь нужно решить проблему
расположения кнопки. Она в том, что на разных экранах наша кнопка должна
располагаться примерно в одном и том же месте относительно заднего фона. Я
воспользовался методом разметки TableLayout. Фактически мы разобьем экран на 9
прозрачных ячеек (3 строки и 3 столбца). В 8 ячейку вставим изображение светлой
кнопки.
Но прежде, давайте создадим второе активити, на
которое будем переходить при нажатии кнопки. Для этого наведите мышку на папку java,
кликните правой кнопкой.
Часть вторая. Установка оригинальных иконок и заднего фона.
Добавим в наше приложение оригинальные иконки.
Иконки, которые автоматически вставила Андроид Студио, находятся в папке нашего проекта res/mipmap.
В папке находится 4 файла ic_launcher, в которых располагаются иконки разного размера в пикселях. Например, открыв файл ic_launcher(mdpi), увидим изображение андроида размером 48х48 dpi (Dots per inch (количество точек на дюйм) применяется для указания разрешения изображения). Наша задача заменить иконки на оригинальные. Копируем нашу иконку нужного разрешения и вставляем в эту же папку под тем же именем ic_launcher. (Если вы скачаете мои иконки, то не забудьте в конце убрать цифры, показывающие разрешение иконки).
Статья для
начинающих программистов, которые решили создать свою игру для Андроид. Прежде
чем писать код, постарайтесь в одном предложении сказать, о чем ваша игра.
Потом представьте себе игроков, которые будут загружать ваше приложение. Это
дети, подростки, домохозяйки или геймеры, определитесь. Если вы решили
зарабатывать на своей игре, то подумайте, что такого ценного будет в ней, за
что люди в здравом уме добровольно будут готовы заплатить J.
Закончим статью
реальной простенькой игрушкой, которую никто никогда не купит.
Наша игра будет называться «MoonBase».
Сценарий:
На лунную базу падают астероиды. Базу нужно
спасать специальным щитом, передвигая его пальцем по экрану. Если 5 астероидов
упадут на базу, то игра будет проиграна, а если выдержите атаку из 30
астероидов, то вы победитель. Никаких переходов на новый уровень в нашей игре
не будет. Всё это вы потом можете с легкостью сделать сами, внимательно почитав
материал.
Yра!!! Появилось наше ПЕРВОЕ ПЛАТНОЕ приложение Dolphin Relax! Нас скачивают США и Арабские Эмираты! Стало легко отблагодарить меня, купив версию приложения. :) Видео к игре пока оставили старое. Дельфинчик уже 3D, без умолку разговаривает, 8 музыкальных треков (7 моих), игра имеет 7 уровней. Буду благодарен Вам, если рука не дрогнет и сделает репост! https://play.google.com/store/apps/details?id=com.alf..
воскресенье, 29 марта 2015 г.
Запрет на изменение ориентации экрана
при повороте планшета или телефона
(нашел в И-нете у разных авторов и оно работает :)) Если Вы автор, дайте знать.
Суть покадровой анимации прекрасно показана в этой гифке, которую я нашел в И-нете.
Сформулируем задачу.
На
фоне какого-либо изображения, должна происходить покадровая анимация объекта. Я
выбрал фоном песок пустыни, а объектом - тарантула, который шевелит ножками.
Приступим...
Этап 1
Создайте в AndroidStudioобычный проект,
где а экране появится «Helloworld!».
Нажимаем Start a new Android Studio project.
Я назвал свой проект
Application
name: FrameAnimation.
В графе Company Domain
можете ввести свою почту, но тогда не забудьте исправить имя пакета, если
просто будете копировать и вставлять файлы приложения.
Потом установим минимальный SDK.
В моем случае это API 16: Android
4.1. Студия подсказывает нам, что почти 83% пользователей в мире смогут
смотреть наше приложение.
Жмем Next
и выбираем по умолчанию Blank
Activity.
Осталось
немного. :)
Выбираем имя макета (Layoutname): main.
Андроид Студио делает сборку приложения по умолчанию.
На экране у меня появилось следующее:
Над картинкой телефона вы видите его марку и версию
Андроид. Для быстрой загрузки эмулятора я выбрал вместо телефона планшет (Tablet) и API19: Android 4.4.2.
Мой выбор также обусловлен тем, что у меня есть реальный
планшет с такими характеристиками, на котором я смогу проверить работу
приложения.
Этап второй.
Создаем приложение.
2.1 Сначала нужно загрузить в папку drawable фоновую картинку pesok.pngи
три файла тарантула, на которых у него разное положение лапок tarantula01.png, tarantula02.pngи tarantula03.png. Картинок для анимации
может быть сколько угодно, но нужно помнить, что при проигрывании приложение их
загружает все в память и при больших объемах картинок, могут возникнуть
проблемы. Как всегда, нужно искать компромисс между красотой анимации и
быстродействием приложения.
2.2 В той же папке drawable создаем файл tarantula.xml
На первом FrameLayout выводим через метод ImageView
фоновое изображение (android:src="@drawable/pesok"),
которое растягиваем на
весь экран (android:scaleType="fitXY").
На втором слое размещаем анимацию (android:src="@drawable/tarantula").
2.4. В завершении рассмотрим содержимое файла MainActivity.java
В нем мы изменили класс наследования для MainActivity, чтобы убрать полоску бара сверху экрана, на котором
выводится имя приложения.