Фруктовый хаос!

Фруктовый хаос!

От 0 до Google Play

Привет, а я тут главное меню для игры закончил. Картинки отрисовываются (тестил на своем телефоне с разрешением 720х1280 и на планшете через эмулятор, разрешение не помню, но все растягивалось красиво), кнопочки работают. Пока что все отлично. Особых проблем не было, все решалось достаточно быстро, поэтому и успел сегодня закончить.

Вот так выглядит главное меню (вариант с выключенным и включенным звуком):

Доказать работоспособность кнопок могу только скрином лога и кодом. Начнем с лога.

Выводил в консоль координаты нажатия на экран и, если они входили в площадь кнопок, выводил надпись "внутри кнопки ИГРАТЬ/ОЧКИ", в зависимости от кнопки.

Вот тут было одно неудобство. Точнее назовем это фичей, хех. В самом андроиде точкой отсчета координат является верхний левый угол экрана. Именно там, по мнению андроида, находится координата (0;0). А вот библиотека LibGDX, с помощью которой я пишу, считает иначе, для нее начало координат - нижняя левая точка. То есть, то, что андроида (0;0), то для LibGDX (0;SCREEN_HEIGHT), и наоборот. Пришлось это учитывать при обработке нажатия на экран.

Код

На данный момент игра состоит из трех классов:

1) Класс игры FruitChaosGame.java , который стартует при запуске игры и проводит нужные действия. При старте игры загружает данные в класс Value, о котором позже, по завершению игры сохраняет все текущие настройки и результаты с помощью того же Value.
2) Класс главного меню FCMainMenu.java - занимается отрисовкой главного меню, обработкой нажатия, из него будут стартовать окно игры и окно лучших результатов. Пока что эти кнопки только дают знать о себе в логе.
3) Values.java - некий контейнер, что ли, в котором хранится информация, нужная всем или большинству классов. Дабы не захламлять поля данных классов одними и теми же данными, я вынес их в отдельный класс. Тут хранится все от разрешения экрана смартфона, до настроек звука и сам список лучших результатов.

FruitChaosGame.java

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

Метод render можно даже убрать отсюда, он, в принципе, здесь не нужен.

Dispose указывает классу что нужно делать когда объект этого класса уничтожается (то есть, при завершении игры). "Освобождаются" все созданные объекты.

FCMainMenu.java

Поля данных и конструктор главного меню

Получает объект игры, чтобы можно было использовать его данные. Инициализирует изображение главного меню и 3 полигона, четырехугольника. Четырехугольники я использую для того, чтобы было удобнее отслеживать нажатия. Туда вписываются координаты кнопки, учитывая вероятное растягивание изображения из-за разных разрешений смартфонов (scaleX и scaleY - коэффиценты растягивания. Равны соотношению разрешения смартфона и разрешения изображений).

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

Метод show вызывается при первом появлении окна. Пока что тут устанавливается нужное состояние кнопки громкости, в зависимости от состояния самой громкости к классе Values. Тут можно даже не отображать изображения, все равно частота смены кадров достаточно большая, и метод render вызовется сразу же.

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

Values.java

Поля данных
Загрузка всего нужного
Сохранение

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

На данный момент вот так выглядит игра :) Всё, с чем можно поиграться сейчас - кнопка громкости, она изменяется от нажатия. Остальное в ближайшей перспективе.

Report Page