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

Tài liệu này sẽ hướng dẫn bạn cách sử dụng API bảng xếp hạng trong một ứng dụng Android để tạo bảng xếp hạng hình ảnh, ghi lại điểm của người chơi và so sánh với đ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 thực hiện lệnh gọi để cập nhật và tải điểm số của người chơi, bạn phải nhớ làm theo các phương pháp hay nhất này để tránh vượt quá định mức API.

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

Xin lưu ý rằng mặc dù không có kết quả nào được trả về, chúng ta vẫn 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.