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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Android Developers

63 поста 1.8K подписчик

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

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

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

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

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

EnLearner

Для ЛЛ: приложение для Aндроид без рекламы, регистрации и смс, оффлайн и онлайн словарь с возможностью изучения и повторения новых слов. Быстрое добавление новых слов с помощью утилиты для Windows. Все ссылки есть в конце поста.

Немного истории из жизни. Следующие 4 абзаца можно не читать - по функционалу дальше.

Мне нравится учить английский. И когда-то давно я почему-то не нашёл удобного приложения для создания и редактирования своих списков слов и решил сделать своё. "Когда-то давно" - это ещё на заре Андроид 2.3 (тогда на самом деле приложений было ещё не так много). В то время я работал инженером-конструктором, и, хотя работа нравилась, на зп рядового конструктора в провинциальном городке можно было позволить себе не так много. Надо было что-то с этим делать, и я пошёл за вторым образованием. Тогда я ещё не знал, что, в принципе, для работы программистом можно обойтись и без него. Хе-хе. А в качестве диплома, я, собственно, и выбрал написание приложения для изучения и повторения, и вот это всё. Конечно, практически ничего из кода я написать не успел, а диплом ограничился анализом рынка, зачем это вообще нужно, и тех. заданием. Тем более, руководитель сразу сказал, что главное - это бумага. Бумага была. *и так сойдёт* Уже после защиты, я клятвенно пообещал ему довести приложение до ума. И, возможно, это одна из причин, по которой каждый раз, решив бросить всё, я возвращался.

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

Начал заниматься приложением в 2011-ом в свободное от работы время. Тогда казалось, что ну за полгода-то уж точно можно сделать что-то адекватное. И вот уже 2022-ой. Вообще, не совсем так конечно, т.к. были большие перерывы - каждая смена места работы, и приложение откладывалось минимум на полгода. Были периоды, когда казалось, что всё тлен, и никому это не нужно. Ну, и Гугл не даёт скучать - что-то переделывалось уже по несколько раз. А, возможно, я просто такой себе программист. *лиса на стуле*

В итоге, после того как ушёл с предыдущего места работы, решил, что пусть на макарошках, но нужно доделать начатое, чем, собственно, и занимался до сегодняшнего дня. Развитие приложения в более-менее нормальном виде можно посмотреть на 4pda.

Почему EnLearner? Потому что с креативностью у меня так себе, а en - это english, а learner - это learner. Но другие языки тоже поддерживаются, так что, ну называется и называется.

Итак, в целом по функционалу.

- оффлайн словарь с поддержкой файлов в форматах .dsl, .xdxf;

- на данный момент доступны для скачивания словари для английского, немецкого, французского, итальянского, испанского, китайского, польского, украинского, белорусского, датского языков;

- поддержка онлайн-словарей: Яндекс.Словарь, Glosbe, Tatoeba, Urban Dictionary;

- создание собственных списков слов;

- возможность изучения и повторения иностранных слов с помощью карточек и упражнений;

- настраиваемый график повторений, основанный на кривой забывания Эббингауза;

- повторение слов при помощи всплывающих упражнений (при разблокировке экрана телефона);

- экспорт и импорт пользовательских словарей в файлы .txt, .xlsx;

- настраиваемые темы интерфейса;

- синхронизация пользовательских словарей с помощью Google Drive;

- всплывающая кнопка быстрого перевода скопированного в буфер текста (Android 9 и ниже);

- быстрое добавление новых слов и редактирование списков слов с помощью утилиты для Windows (можно скачать на сайте или на 4pda)

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

Главная форма приложения состоит из 3 вкладок: поиск в базовых словарях, текущий список слов в изучении, список своих словарей для изучения.

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

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

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

Список своих словарей для изучения - набор пользовательских списков слов. Можно добавлять, удалять и изменять порядок словарей. Каждый словарь можно открыть для редактирования в нём слов, либо запустить упражнения только для слов этого словаря.

На форме доступен список "Избранное" - сюда можно поместить любые слова (например, которые особо плохо запоминаются) и повторять их отдельно.

В "Изученное" попадают слова, набравшие максимальное количество баллов в процессе изучения, и, собственно, считающиеся изученными.

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

Конечно, есть и упражнения для повторения слов.

Коротко как-то так. Также по функционалу можно почитать в справке в самом приложении.

Чуть больше картинок с описанием можно посмотреть на сайте.

Кроме реализации текущих просьб пользователей, планов ещё много:

- поддержка большего числа языков;

- улучшение работы с оффлайн словарями (в частности, поддержка звуков и изображений для dsl);

- поддержка большего числа форматов базовых словарей;

- реализация полнотекстового поиска по словарям;

- подключение словарей морфем и предложение вариантов при неправильном написании слова;

- подключение других онлайн словарей, в частности Wiktionary;

- разработка и переход с Гугл Драйв на нормальный сервис для синхронизации списков слов;

- расширить набор упражнений для повторения;

- включить несколько игр, чтобы просто позалипать, типа hangman;

- готовые наборы списков слов для изучения по темам.

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

Приложение бесплатное и без рекламы. Есть кнопка "Поддержать".

Спасибо, что дочитали! Буду рад, если EnLearner кому-то пригодится. Пишите пожелания и предложения - по возможности постараюсь реализовать.

📎📎📎📎📎📎📎📎📎📎