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:
Vui lòng làm theo hướng dẫn để cài đặt và thiết lập ứng dụng để sử dụng Dịch vụ trò chơi của Google Play trong hướng dẫn Thiết lập SDK Dịch vụ Google Play.
Xác định các bảng xếp hạng mà bạn muốn trò chơi của mình hiển thị hoặc cập nhật, bằng cách làm theo hướng dẫn trong tài liệu hướng dẫn của Google Play Console.
Làm quen với những đề xuất được mô tả trong Danh mục kiểm tra chất lượng.
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.