Bảng xếp hạng trong trò chơi Android

Hướng dẫn này chỉ cho bạn cách sử dụng API bảng xếp hạng trong ứng dụng Android để tạo bảng xếp hạng trực quan, ghi lại điểm số của người chơi và so sánh điểm số dựa trên điểm số của người chơi trong các phiên chơi trước đó. Bạn có thể tìm thấy các API trong các gói com.google.android.gms.gamescom.google.android.gms.games.leaderboards.

Trước khi bắt đầu

Nếu chưa từng có kinh nghiệm, bạn có thể xem lại các khái niệm về bảng xếp hạng của trò chơi.

Trước khi bắt đầu lập trình bằng API bảng xếp hạng, bạn hãy:

Tải ứng dụng bảng xếp hạng

Để có thể sử dụng API bảng xếp hạng, trước tiên, trò chơi của bạn phải có được một đối tượng LeaderboardsClient. Bạn có thể thực hiện việc này bằng cách gọi phương thức Games.getLeadeboardsClient() và truyền vào hoạt động.

Cập nhật điểm số của người chơi

Khi điểm số của người chơi thay đổi (ví dụ: khi người chơi kết thúc trò chơi), trò chơi của bạn có thể cập nhật điểm số của họ trên bảng xếp hạng bằng cách gọi LeaderboardsClient.submitScore(), đồng thời truyền mã bảng xếp hạng cũng như giá trị điểm thô.

Đoạn mã sau đây cho thấy cách ứng dụng của bạn có thể cập nhật điểm số của người chơi:

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

Bạn nên xác định mã bảng xếp hạng trong tệp strings.xml để trò chơi của bạn có thể tham chiếu đến bảng xếp hạng theo mã tài nguyên. Khi gọi điện đến cập nhật và tải điểm số của người chơi, hãy nhớ tuân theo các phương pháp hay nhất để tránh vượt quá hạn mức API.

Đang hiển thị bảng xếp hạng

Để hiển thị bảng xếp hạng, hãy gọi LeaderboardsClient.getLeaderboardIntent() để lấy Intent tạo giao diện người dùng của bảng xếp hạng mặc định. Sau đó, trò chơi của bạn có thể hiển thị giao diện người dùng bằng cách gọi startActivityForResult.

Đoạn mã sau đây cho thấy cách ứng dụng của bạn có thể cập nhật điểm số của người chơi. Trong đoạn mã, RC_LEADERBOARD_UI là một số nguyên tùy ý cho mã yêu cầu.

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

Lưu ý rằng mặc dù không có kết quả nào được trả về, chúng ta phải sử dụng startActivityForResult để API có thể lấy thông tin nhận dạng của gói gọi. Dưới đây là một ví dụ về giao diện người dùng của bảng xếp hạng mặc định.