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

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

قبل از شروع

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

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

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

برای شروع استفاده از تابلوهای API، بازی شما ابتدا باید یک شی LeaderboardsClient داشته باشد. می توانید این کار را با فراخوانی متد PlayGames.getLeadeboardsClient() و عبور از اکتیویتی انجام دهید.

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

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

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

PlayGames.getLeaderboardsClient(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() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

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