Bảng dẫn

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 SDK c++ của Dịch vụ trò chơi của Play để tạo bảng xếp hạng hình ảnh, ghi lại điểm số của người chơi và so sánh điểm số 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 này trong LeaderboardsClient.

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 PgsLeaderboardsClient_create() 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 PgsLeaderboardsClient_submitScoreImmediate. Bạn cần truyền mã nhận dạng bảng xếp hạng, giá trị điểm thô, thẻ điểm không bắt buộc và hàm gọi lại.

// Callback function to handle the result of submitting the score
void OnScoreSubmitted(PgsStatusCode status_code,
                      PgsScoreSubmissionData* score_submission_data,
                      void* user_data) {
  if (status_code == PGS_STATUS_SUCCESS) {
    // Score submitted successfully
    // You can inspect score_submission_data for details
    // Remember to release the data when done:
    PgsScoreSubmissionData_Release(score_submission_data);
  } else {
    // Handle error
  }
}

// Function to submit the score
void SubmitScore(PgsLeaderboardsClient* client, const char* leaderboard_id, int64_t score) {
  const char* score_tag = NULL; // Optional tag

  PgsLeaderboardsClient_submitScoreImmediate(
      client,
      leaderboard_id,
      score,
      score_tag,
      OnScoreSubmitted,
      NULL // user_data - optional context pointer
  );
}

// Example usage:
// Assuming 'my_leaderboard_id' is defined elsewhere, e.g., fetched from resources
// SubmitScore(leaderboards_client, my_leaderboard_id, 1337);

Bạn nên quản lý mã bảng xếp hạng dưới dạng hằng số hoặc tài nguyên trong mã c++.

Hiển thị bảng xếp hạng

Để hiển thị giao diện người dùng mặc định của bảng xếp hạng cho một bảng xếp hạng cụ thể, hãy gọi PgsLeaderboardsClient_showLeaderboardUI. Hàm này yêu cầu mã nhận dạng ứng dụng khách, hoạt động, mã nhận dạng bảng xếp hạng, khoảng thời gian và bộ sưu tập, cũng như một lệnh gọi lại.

// Callback function to handle the result of showing the UI
void OnShowLeaderboardUI(PgsStatusCode status_code, bool success, void* user_data) {
  if (status_code == PGS_STATUS_SUCCESS && success) {
    // UI was shown successfully
  } else {
    // Handle error or failure to show UI
  }
}

// Function to show a specific leaderboard UI
void ShowLeaderboard(PgsLeaderboardsClient* client, jobject activity, const char* leaderboard_id) {
  PgsLeaderboardsClient_showLeaderboardUI(
      client,
      activity,
      leaderboard_id,
      PGS_LEADERBOARD_TIME_SPAN_ALL_TIME, // Or PGS_LEADERBOARD_TIME_SPAN_DAILY, PGS_LEADERBOARD_TIME_SPAN_WEEKLY
      PGS_LEADERBOARD_COLLECTION_PUBLIC,  // Or PGS_LEADERBOARD_COLLECTION_FRIENDS
      OnShowLeaderboardUI,
      NULL // user_data - optional context pointer
  );
}

// Example usage:
// ShowLeaderboard(leaderboards_client, android_activity, my_leaderboard_id);

Hàm này hiển thị giao diện người dùng. Đối tượng activity cung cấp ngữ cảnh để hiển thị giao diện người dùng.