Android oyunlarında skor tabloları

Bu kılavuzda, Android uygulamalarında görsel skor tabloları oluşturmak, bir oyuncunun skorunu kaydetmek ve skoru oyuncunun önceki oyun oturumlarındaki puanıyla karşılaştırmak için skor tablosu API'larının nasıl kullanılacağı gösterilmektedir. API'ler com.google.android.gms.games ve com.google.android.gms.games.leaderboards paketlerinde bulunabilir.

Başlamadan önce

Henüz yapmadıysanız skor tabloları oyun konseptlerini incelemeniz faydalı olabilir.

Skor tablosu API'larını kullanarak kodlamaya başlamadan önce:

Skor tablosu istemcisini alma

Leaderboards API'yi kullanmaya başlamak için oyununuzun önce bir LeaderboardsClient nesnesi edinmesi gerekir. Bunu, Games.getLeadeboardsClient() yöntemini çağırıp etkinliği ileterek yapabilirsiniz.

Oyuncunun skorunu güncelleyin

Oyuncunun puanı değiştiğinde (örneğin, oyuncu oyunu bitirdiğinde) LeaderboardsClient.submitScore() yöntemini çağırıp skor tablosu kimliğini ve ham skor değerini geçerek skoru skor tablosunda güncelleyebilir.

Aşağıdaki kod snippet'inde, uygulamanızın oyuncunun skorunu nasıl güncelleyebileceği gösterilmektedir:

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

strings.xml dosyanızda skor tablosu kimliğini tanımlamak iyi bir uygulamadır. Böylece oyununuz, skor tablolarına kaynak kimliğine göre referans verebilir. Oyuncu puanlarını güncellemek ve yüklemek için çağrı yaparken API kotanızı aşmamak için bu en iyi uygulamaları da uyguladığınızdan emin olun.

Skor tablosu görüntüleme

Skor tablosunu göstermek için LeaderboardsClient.getLeaderboardIntent() numaralı telefonu arayarak Intent göndererek varsayılan leaderboard kullanıcı arayüzünü oluşturun. Daha sonra oyununuz, startActivityForResult yöntemini çağırarak kullanıcı arayüzünü açabilir.

Aşağıdaki kod snippet'i, uygulamanızın oyuncunun skorunu nasıl güncelleyebileceğini gösterir. Kod snippet'inde RC_LEADERBOARD_UI, istek kodu için rastgele bir tam sayıdır.

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);
        }
      });
}

Hiçbir sonuç döndürülmese de API'nin çağıran paketin kimliğini edinebilmesi için startActivityForResult kullanmanız gerekir. Varsayılan skor tablosu kullanıcı arayüzüne ilişkin bir örneği aşağıda görebilirsiniz.