Tabele wyników w grze na Androida

W tym przewodniku pokazujemy, jak używać interfejsów API tabel wyników w aplikacji na Androida do tworzenia wizualnych tabel wyników, rejestrowania wyniku gracza i porównywania go z wynikami z poprzednich sesji gry. Interfejsy API znajdziesz w pakietach com.google.android.gms.games i com.google.android.gms.games.leaderboards.

Zanim zaczniesz

Warto zapoznać się z koncepcjami dotyczącymi tabel wyników.

Zanim zaczniesz programować za pomocą interfejsów API tabel wyników:

Zdobywanie klientów tabel wyników

Aby zacząć korzystać z tabeli wyników, gra musi najpierw uzyskać obiekt LeaderboardsClient. Aby to zrobić, wywołaj metodę Games.getLeadeboardsClient() i przekaż działanie.

Aktualizacja wyniku gracza

Gdy wynik gracza ulegnie zmianie (np. po jego ukończeniu), gra może zaktualizować swój wynik na tablicy wyników, wywołując metodę LeaderboardsClient.submitScore() i przekazując identyfikator tabeli wyników oraz nieprzetworzoną wartość.

Ten fragment kodu pokazuje, jak Twoja aplikacja może aktualizować wynik gracza:

PlayGames.getLeaderboardsClient(this)
    .submitScore(getString(R.string.leaderboard_id), 1337);

Dobrze jest zdefiniować identyfikator tabeli wyników w pliku strings.xml, aby gra mogła odwoływać się do tabel wyników z wykorzystaniem identyfikatora zasobu. Podczas wywoływania aktualizacji i wczytywania wyników odtwarzacza pamiętaj też, aby przestrzegać tych sprawdzonych metod, aby uniknąć przekroczenia limitu interfejsu API.

Wyświetlanie tabeli wyników

Aby wyświetlić tablicę wyników, zadzwoń pod numer LeaderboardsClient.getLeaderboardIntent(), aby uzyskać Intent i utworzyć domyślny interfejs tablicy wyników. Gdy to zrobisz, Twoja gra może wywołać interfejs, wywołując metodę startActivityForResult.

Fragment kodu poniżej pokazuje, jak Twoja aplikacja może aktualizować wynik gracza. We fragmencie kodu RC_LEADERBOARD_UI jest dowolną liczbą całkowitą dla kodu żądania.

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

Zwróć uwagę, że nawet jeśli nie został zwrócony żaden wynik, musimy użyć interfejsu startActivityForResult, aby interfejs API mógł uzyskać tożsamość pakietu do wywołania. Poniżej znajduje się przykład domyślnego interfejsu użytkownika tablicy wyników.