تابلوهای امتیازات در بازی اندروید

این راهنما به شما نشان می دهد که چگونه از API های تابلوی امتیازات در یک برنامه اندروید برای ایجاد تابلوهای امتیازات بصری، ثبت امتیاز بازیکن و مقایسه امتیاز با امتیاز بازیکن در جلسات قبلی بازی استفاده کنید. APIها را می‌توانید در بسته‌های com.google.android.gms.games و com.google.android.gms.games.leaderboards پیدا کنید.

قبل از شروع

اگر قبلاً این کار را انجام نداده اید، ممکن است مرور مفاهیم بازی تابلوهای امتیازات برای شما مفید باشد.

قبل از شروع به کدنویسی با استفاده از API های تابلوی امتیازات:

دریافت مشتری تابلوهای امتیازات

برای شروع استفاده از تابلوهای API، بازی شما ابتدا باید یک شی LeaderboardsClient داشته باشد. می توانید این کار را با فراخوانی متد Games.getLeadeboardsClient() انجام دهید و فعالیت و GoogleSignInAccount برای بازیکن فعلی ارسال کنید. برای یادگیری نحوه بازیابی اطلاعات حساب بازیکن، به ورود به سیستم در بازی‌های Android مراجعه کنید.

به روز رسانی امتیاز بازیکن

وقتی امتیاز بازیکن تغییر می‌کند (مثلاً وقتی بازیکن بازی را تمام می‌کند)، بازی شما می‌تواند با فراخوانی LeaderboardsClient.submitScore() امتیاز خود را در تابلوی امتیازات به‌روزرسانی کند، و شناسه تابلوی امتیازات و مقدار امتیاز خام را ارسال کند.

قطعه کد زیر نشان می دهد که چگونه برنامه شما می تواند امتیاز بازیکن را به روز کند:

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

یک تمرین خوب این است که شناسه تابلوی امتیازات را در فایل strings.xml خود تعریف کنید تا بازی شما بتواند با شناسه منبع به تابلوهای امتیازات ارجاع دهد. هنگام برقراری تماس برای به‌روزرسانی و بارگیری امتیازات بازیکن، مطمئن شوید که این بهترین روش‌ها را برای جلوگیری از تجاوز از سهمیه API خود دنبال می‌کنید.

نمایش تابلوی امتیازات

برای نمایش تابلوی امتیازات، LeaderboardsClient.getLeaderboardIntent() را فراخوانی کنید تا Intent برای ایجاد رابط کاربری پیش‌فرض تابلوی امتیازات دریافت کنید. سپس بازی شما می‌تواند با فراخوانی startActivityForResult UI را نمایش دهد.

قطعه کد زیر نشان می دهد که چگونه برنامه شما می تواند امتیاز بازیکن را به روز کند. در قطعه کد، RC_LEADERBOARD_UI یک عدد صحیح دلخواه برای کد درخواست است.

private static final int RC_LEADERBOARD_UI = 9004;

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

توجه داشته باشید که حتی اگر هیچ نتیجه ای برگردانده نشد، باید از startActivityForResult استفاده کنیم تا API بتواند هویت بسته فراخوانی را بدست آورد. نمونه‌ای از رابط کاربری پیش‌فرض تابلوی امتیازات در زیر نشان داده شده است.