Пишем простейшую игру на Android (Часть 2)

Привет, пикабуняне!


Продолжаем наш рассказ о написании простейшей игры на платформе Android.


Сразу для лентяев - игра в стиле Викторина, много непонятных слов и букв, есть картинки.

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


1 - Макет

2/3 - Функционал

4 - Графика (иконки)

5 - Графика (интерфейс)

6 - Работа над ошибками

7 - Тестирование

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

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


Скриншот выше - новая активность, назвал ее одноименно: stage_1


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


Это дело мы настраиваем в манифесте, предварительно создав новый стиль с параметром

<item name="android:windowFullscreen">true</item>

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

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


Я опишу наиболее важные процедуры на экране.

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

На данном экране мы видим:


- TextView (Номер вопроса)

- ImageView (Изображение, которое я показываю через библиотеки Picasso + PolygonImageView, позволяющее выводить произвольные рамки и фигуры).

Искать в гитхабе по запросу PolygonImageView

- TextView (Текст вопроса)

- Button (Кнопка ответить. По ней будет выводиться диалог, в котором можно ввести ответ)

- Button (Кнопка для подскази. По нажатию забирает драгоценные фантики, и выводит подсказку)

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

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

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

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

В методе я добавил комментарии, так что не сложно разобраться. Картинка, которая взятая из гугла, в последующем будет сжата и загружена на хост/или в приложение, некоторые значения будут заталкиваться в strings (потому что так надо)

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

Метод, отлавливающий нажатие на кнопку "Подсказать". Вначале, в методе идет проверка, сколько фантиков накоплено у юзера. Если фантиков не хватает, то подсказка показана не будет.


Если же фантиков достаточно, будет вызван alertdialog, в котором будет браться значение из string

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

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

Пишем простейшую игру на Android (Часть 2) Программирование, Android, Длиннопост

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


Выполняется там простейшая математическая операция на языке ява (+/-), и там показывать даже нечего.


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


Также нам надо поработать над уведомлениями, если ответ пользователя был неправильный.


Друзья!


Желающие (и имеющие свободное время) художники могут присоединиться к созданию игрового интерфейса, так как игра будет полноэкранной, и многие элементы будут упразднены. За идею =)


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


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



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


Всем бобра!

Android Developers

86 постов2K подписчиков

Добавить пост

Правила сообщества

Друзья!


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

(освоить Java / покормить кота / установить студию), но и реальные примеры того, что Вы описываете.

Автор поста оценил этот комментарий

Даже если человек попробует это сделать, то ничего не получится. Как минимум, нет picasso в gradle файле.

Вообще начинание неплохое, но очень много замечаний по code convention

раскрыть ветку (1)
Автор поста оценил этот комментарий

конкретнее.


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

показать ответы
Автор поста оценил этот комментарий

Так а для кого Вы сделали пост тогда? Программисты и так это всё умеют, а неспециалисты не смогут этого сделать.

раскрыть ветку (1)
Автор поста оценил этот комментарий

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


p.s. хомячки не сделают, ибо кроме xml тут не хватает 30+ файлов

показать ответы
1
Автор поста оценил этот комментарий

Нет разметки XML, нет gradle файлов. Именование переменных и классов через "_", переменные с большой буквы.

раскрыть ветку (1)
Автор поста оценил этот комментарий

ненужные вещи в данном разговоре.


разметка перетягивается в редактор мышкой, в gradle - две внешние библиотеки + minsdk 15. что там показывать? по поводу переменных - на моих приложениях еще не фиксировались краши из за синтаксиса классов и методов, пусть даже они не по феншую

показать ответы