libGDX. Урок 17. Сохраняем лучший результат в игре

В libGDX присутствует возможность сохранения неизменной информации, такой как, например, лучший результат (high score) в игре. Для этого используются персональные настройки устройства (preferences). Персональные настройки (preferences) – это способ хранения данных, которые не исчезнут и после закрытия приложения. В операционных системах (ОС) настольных компьютеров такие данные хранятся в файлах пользовательских каталогов. В мобильных устройствах эти данные хранятся, используя родную API девайса.

Начнём реализацию возможности сохранения лучшего результат в нашей игре с объявления переменной для её хранения. В классе GameManager пишем:

public static int score;
public static int highScore; // лучший результат

После этого объявим переменную для персональных настроек:

public static int highScore; // лучший результат
static Preferences prefs; // объект класса Preferences

В методе initialize() класса GameManager добавьте следующие две строки:

public static void initialize(float width,float height){

    score=0;
    prefs = Gdx.app.getPreferences("My Preferences"); //получаем файл персональных данных
    highScore = prefs.getInteger("highscore"); //получаем текущий лучший результат

Получается мы сначала загружаем файл персональных данных, а потом уже из него достаём переменную, в которой хранится лучший результат. В классе Ball в методе checkCollisionsWithBasket() необходимо сделать проверку на превышение значения переменной score значение переменной highScore. Если score выше highScore, заменяем её значение:

// проверка, было ли столкновение между мячом и корзиной
if(Intersector.overlaps(ballCircle, GameManager.basket.basketRectangle)){
    GameManager.score++;
    if(GameManager.score>GameManager.highScore) {
        GameManager.highScore = GameManager.score;
    }

В методе dispose() класса GameManager при закрытии нашего приложения мы будем сохранять лучший результат:

public static void dispose() {

    prefs.putInteger("highscore", highScore);
    prefs.flush(); //убедиться, что настройки сохранены

Теперь отобразим лучший результат на экране устройства. Добавьте следующую строку коду в метод displayMassage() класса TextManager:

// отображаем лучший результат в левом верхнем углу
font.draw(batch, "High Score: "+ GameManager.highScore, width/40f,height*0.95f);

// отображаем результат в правом верхнем углу
font.draw(batch, glyphLayout, width - width/8f, height*0.95f);

Полученный результат можно увидеть запустив приложение:

android studio libgdx игра

preferences libgdx

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

Скачать исходники