отчет
.pdfФедеральное государственное автономное образовательное учреждение высшего образования
«Омский государственный технический университет»
Кафедра «Автоматизированные системы обработки информации и управления»
Отчёт по лабораторной работе
на тему «Игра «Бутылочка»» по дисциплине «Программирование мобильных приложений»
студента Шадчнева Георгия Алексеевича группы ПИН-221
Проверил к.т.н, доцент |
А.А. Зубарев |
Выполнил студент |
Г.А. Шадчнев |
Омск 2025
РЕФЕРАТ
Отчет с., рис., источников, 2 приложения.
Ключевые слова: ANDROID, JAVA, XML, ANIMATION, GAME DEVELOPMENT, UI/UX, ACTIVITY.
Цель работы: приобретение теоретических и практических навыков разработки развлекательного программного обеспечения для ОС Android,
изучение механизмов анимации и работы с ресурсами изображений.
Объектом работы является процесс разработки мобильных приложений на языке Java.
Врезультате работы были приобретены навыки работы с
RotateAnimation, динамической сменой ресурсов (Drawable), версткой интерфейсов в XML и обработкой пользовательских событий касания.
Разработано полнофункциональное приложение-игра.
2
Оглавление |
|
ВВЕДЕНИЕ ................................................................................................... |
4 |
ЗАКЛЮЧЕНИЕ ........................................................................................... |
10 |
ПРИЛОЖЕНИЕ №1.................................................................................... |
11 |
3
ВВЕДЕНИЕ
В современном мире индустрия мобильных игр занимает огромную долю рынка программного обеспечения. Простые казуальные игры, служащие для развлечения в компании, остаются востребованными благодаря своей доступности и простоте использования. Актуальность данной работы обусловлена необходимостью изучения базовых принципов построения интерактивных графических приложений, которые являются основой для создания более сложных программных продуктов.
Целью данной работы является приобретение теоретических и практических навыков разработки мобильного приложения с использованием нативных инструментов Android SDK и языка программирования Java.
Объектом исследования выступает процесс создания Android-
приложений.
Предметом работы является реализация анимации вращения и динамического управления ресурсами в среде Android Studio.
В рамках работы решаются следующие задачи:
1.Изучение принципов верстки интерфейсов с использованием
RelativeLayout и LinearLayout.
2.Освоение работы с графическими ресурсами и их программной подменой.
3.Реализация алгоритма случайного вращения объекта для имитации физического процесса.
4.Создание механизма кастомизации приложения (смена фона и скинов объектов).
Практическая значимость работы заключается в создании работающего прототипа игры для компании, а также в закреплении навыков работы с анимациями и обработкой событий в Android.
4
1. Специфика разработки графических приложений под Android
1.1 Особенности жизненного цикла Activity
При разработке игрового приложения ключевую роль играет понимание жизненного цикла Activity. В отличие от процедурного программирования, где программа запускается с функции main(), система Android инициализирует код в экземпляре Activity, вызывая определенные методы обратного вызова,
соответствующие этапам его жизненного цикла.
Для разрабатываемого приложения основным классом является
MainActivity, наследуемый от AppCompatActivity. Основная инициализация графических компонентов и переменных происходит в методе onCreate().
Именно здесь связываются Java-объекты с XML-представлением через метод setContentView(R.layout.activity_main).
1.2 Работа с графическими ресурсами и макетами
Графический интерфейс пользователя (UI) в Android строится на основе иерархии объектов View и ViewGroup. В данной работе использован подход декларирования UI в XML-файлах.
Для реализации игрового поля выбран контейнер RelativeLayout,
который позволяет позиционировать дочерние элементы относительно друг друга или родительского контейнера. Это критически важно для центрирования главного элемента (бутылочки) на экране.
Для панели выбора скинов и фонов используются вложенные контейнеры LinearLayout и HorizontalScrollView, обеспечивающие горизонтальную прокрутку элементов управления при сохранении адаптивности интерфейса.
5
2. Реализация анимации в Android
2.1 Классы анимации и их применение
Android SDK предоставляет несколько механизмов для создания анимации. В рамках данной лабораторной работы используется пакет android.view.animation, который идеально подходит для простых трансформаций (вращение, масштабирование, перемещение).
Ключевым классом является RotateAnimation. Он позволяет задать начальный и конечный угол поворота, точку, вокруг которой происходит вращение (pivot point), и длительность анимации.
2.2 Математическая модель вращения объектов
Для обеспечения эффекта "случайности" и реалистичности игры используется генератор псевдослучайных чисел java.util.Random.
Логика вращения строится на следующем алгоритме:
1.Определение текущей позиции объекта (чтобы вращение начиналось не с 0, а с места последней остановки).
2.Генерация случайного угла остановки (random.nextInt(360)).
3.Добавление гарантированного количества полных оборотов
(например, 5 полных кругов) для создания эффекта длительного вращения.
4. Использование интерполятора (в данном случае стандартного линейного или AccelerateDecelerateInterpolator по умолчанию) для плавного старта и остановки.
Формула конечного угла поворота:
Уголfinal = Уголcurrent + Уголrandom + (Nrounds * 360)
6
3. Разработка мобильного приложения «Бутылочка»
3.1 Проектирование пользовательского интерфейса
Разработанный интерфейс приложения состоит из трех основных логических блоков показаных на рисунках 1-3
Рисунок 1 – Интерфейс игры
7
Рисунок 2 – Функционал вращения
Рисунок 3 – Смена бутылки и заднего фона
1. Игровое поле (Центральная часть): Здесь расположен основной интерактивный элемент — изображение бутылки (ImageView с id bottle).
Оно выровнено по центру экрана (android:layout_centerInParent="true").
2.Панель выбора скинов (Верхняя часть): Горизонтальный
LinearLayout, содержащий миниатюры доступных изображений бутылок. При нажатии на миниатюру центральное изображение меняется. Использован атрибут android:layout_weight="1" для равномерного распределения места между иконками.
3.Панель выбора фона (Нижняя часть): Реализована с помощью
HorizontalScrollView, что позволяет разместить большое количество
8
вариантов фона, выходящих за пределы ширины экрана. Внутри находится LinearLayout с набором изображений-превью.
3.2 Программная реализация логики игры
Основная логика реализована в классе MainActivity (см. Приложение Б).
Инициализация в методе onCreate происходит привязка переменных
ImageView bottle и RelativeLayout back к их ID в XML-файле. Также инициализируется объект Random.
• Механика вращения (метод spinBottle) метод вызывается при нажатии на центральное изображение (атрибут android:onClick="spinBottle").
• Для предотвращения повторного запуска анимации до окончания предыдущей используется флаг flagBottleSpinning.
Ключевой фрагмент кода анимации Animation rotate = new RotateAnimation(lastPos, kol + rounds * 360, x, y); rotate.setDuration(6500); //
Длительность 6.5 секунд rotate.setFillAfter(true); // Сохранить позицию после остановки
9
ЗАКЛЮЧЕНИЕ
В результате выполнения работы по дисциплине «Программирование мобильных приложений» была достигнута поставленная цель — приобретены теоретические и практические навыки разработки программного обеспечения для платформы Android.
Практическим результатом работы стало создание полнофункционального игрового приложения «Бутылочка». В ходе разработки были решены следующие задачи:
1.Спроектирован адаптивный пользовательский интерфейс с использованием вложенных макетов.
2.Реализована сложная анимация вращения с сохранением состояния объекта.
3.Обеспечено взаимодействие пользователя с приложением через обработку событий касания (Touch Events).
4.Внедрена система динамической смены графического оформления
(скинов и фонов).
Приложение работает стабильно, анимации плавные, функционал полностью соответствует техническому заданию. Полученные знания могут быть применены при разработке более сложных игровых и прикладных проектов.
10
