编写苹果游戏中心应用程序(翻译 1.10 向排行榜提交得分)

本文主要是介绍编写苹果游戏中心应用程序(翻译 1.10 向排行榜提交得分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.10 向排行榜提交得分

问题

    你已经在iTunes Connect中创建了至少一个排行榜,现在你想将玩家的成绩保存到排行榜。

解决方案

    使用GKScore类的实例方法reportScoreWithCompletionHandler:

讨论

    如果已经创建了排行榜,则遵循以下的步骤,以向排行榜提交成绩:

    1. 验证本地玩家(条款1.5)。

    2. 创建GKScore的实例,设置该实例的成绩分类为要使用的“Leaderboard ID”。

    3. 设置实例的value属性。

    4. 使用GKScore类的实例方法reportScoreWithCompletionHandler:。该方法接收一个参数,它必须是一个返回void、接受一个NSError类型的参数的块对象。你可以使用NSError参数来判断处理过程中是否有错误发生:

    - (BOOL) reportScore:(NSUInteger)paramScore
    toLeaderboard:(NSString *)paramLeaderboard{

        __block BOOL result = NO;

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

        if ([localPlayer isAuthenticated] == NO){
            NSLog(@"You must authenticate the local player first.");
            return NO;
        }

        if ([paramLeaderboard length] == 0){
            NSLog(@"Leaderboard identifier is empty.");
            return NO;
        }

        GKScore *score = [[[GKScore alloc]
                           initWithCategory:paramLeaderboard] autorelease];

        score.value = (int64_t)paramScore;

        NSLog(@"Attempting to report the score...");

        [score reportScoreWithCompletionHandler:^(NSError *error) {
            if (error == nil){
                NSLog(@"Succeeded in reporting the error.");
                result = YES;
            } else {
                NSLog(@"Failed to report the error. Error = %@", error);
            }
        }];

        return result;

    }

    - (void) authenticateLocalPlayerAndReportScore{

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

        if ([localPlayer isAuthenticated] == YES){
            NSLog(@"The local player has already authenticated.");
            return;
        }

        [localPlayer authenticateWithCompletionHandler:^(NSError *error) {

            if (error == nil){
                NSLog(@"Successfully authenticated the local player.");

                [self reportScore:10
                    toLeaderboard:@"MGL1LB"];
            } else {
                NSLog(@"Failed to authenticate the player with error = %@", error);
            }
        }];
    }

    authenticateLocalPlayerAndReportScore方法将验证本地玩家,向“Reference ID”为“MGL1LB”(条目1.9)的排行榜提交成绩(10分)。我的控制台窗口输出结果如下:

    Successfully authenticated the local player.
    Attempting to report the score...
    Succeeded in reporting the error.

    如果向不能存在的排行榜提交数据,则从reportScoreWithCompletionHandler:方法收到的错误将类似如下:

    Error Domain=GKErrorDomain Code=17 "The requested operations could
    not be completed because one or more parameters are invalid."
    UserInfo=0x5f43a90 {NSUnderlyingError=0x5f09390 "The operation
    couldn't be completed. status = 5053", NSLocalizedDescription=The
    requested operations could not be completed because
    one or more parameters are invalid.}

    查看提交到游戏中心(沙盒服务器)的成绩有三种方法:

    1. 在iOS模拟器中使用游戏中心应用程序。

    2. 用程序获取成绩(条目1.11)。

    3. 在程序的用户界面中显示排行榜(条目1.12)。

    后两种显示排行榜成绩给玩家的方法将在各自对应的章节介绍。此处,我只讲解如何使用iOS模拟器显示成绩:

    1. 在模拟器中打开游戏中心应用程序。

    2. 登录为本地玩家。

    3. 在屏幕下方导航到“Games”页签。

    4. 选择提交了成绩的游戏,你将看到游戏的菜单,如图1-10。


图 1-10 iOS模拟器中的游戏菜单

    5. 选择“Leaderboard”,将看到排行榜中的成绩(如图1-11)。


图 1-11 iOS模拟器中排行榜界面

    图1-11中的成绩是10,因为我们先前提交的成绩就是10。

这篇关于编写苹果游戏中心应用程序(翻译 1.10 向排行榜提交得分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885395

相关文章

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de