Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 游戏中心结果公告_Ios_Game Center - Fatal编程技术网

Ios 游戏中心结果公告

Ios 游戏中心结果公告,ios,game-center,Ios,Game Center,我正在做一个回合制游戏。。。传输的唯一信息是球员的得分以及是否发送了回合 当下一个玩家接到回合时。数据存储在“scoreToBeat”中,turnSent=1。然后轮到玩家。之后游戏结束,因为turnSent=1,所以被调用。我使用了Ray Wenderlich在上的基于回合的教程 在他的情况下,比赛结束,平局。这样地。。。我似乎无法用它来告诉那个迷路的人 for (GKTurnBasedParticipant *part in currentMatch.participants) {

我正在做一个回合制游戏。。。传输的唯一信息是球员的得分以及是否发送了回合

当下一个玩家接到回合时。数据存储在“scoreToBeat”中,turnSent=1。然后轮到玩家。之后游戏结束,因为turnSent=1,所以被调用。我使用了Ray Wenderlich在上的基于回合的教程

在他的情况下,比赛结束,平局。这样地。。。我似乎无法用它来告诉那个迷路的人

   for (GKTurnBasedParticipant *part in currentMatch.participants) {           
          part.matchOutcome = GKTurnBasedMatchOutcomeTied;
           }
我似乎无法让它向失败者展示它总是显示出胜利。这是我最近的一次尝试。。。顺便说一句,比赛中正好有两名球员。。。任何想法都将不胜感激

    for (GKTurnBasedParticipant *part in currentMatch.participants) {           
           if(part==currentMatch.currentParticipant)
           {
               if(points>scoreToBeat)
               {
                   part.matchOutcome=GKTurnBasedMatchOutcomeWon;   
               }
               else {
                   part.matchOutcome=GKTurnBasedMatchOutcomeLost;
               }
           }
           else {
               if(points>scoreToBeat)
               {
                   part.matchOutcome=GKTurnBasedMatchOutcomeLost;   
               }
               else {
                   part.matchOutcome=GKTurnBasedMatchOutcomeWon;
               }

           }

分数是设备上的本地分数,对吗?如果是这样,我会做以下工作:

  if([part.playerID isEqualToString [GKLocalPlayer localPlayer].playerID]]) {

 if(points>scoreToBeat) {

part.matchOutcome = GKTurnBasedMatchOutComeWon;

} else {

part.matchOutcome = GKTurnBasedMatchOutComeLost;

} 

} else { 
    if(points>scoreToBeat) {
               part.matchOutcome=GKTurnBasedMatchOutcomeLost;   
           } else {
               part.matchOutcome=GKTurnBasedMatchOutcomeWon;
           }

       }
}
此外,记住使用NSLog查看要击败的分数是否实际转移。要继续使用currentTurnBasedMatch.matchData,可能会犯一个错误,您应该将委托方法中返回的currentTurnBasedMatch设置为GKTurnBasedMatch

编辑:我使用的代码截取如下

if([participant.playerID isEqualToString:[GKLocalPlayer localPlayer].playerID]){
        NSLog(@"we are the last player in the game -end the game");
        for (GKTurnBasedParticipant *part in match.participants) {

            part.matchOutcome = GKTurnBasedMatchOutcomeTied;
        }
       [match endMatchInTurnWithMatchData:match.matchData completionHandler:^(NSError *error) {
           if ([AppDelegate mainMenuController].multiGameMenu.turnBasedMenu !=nil) {

               [[AppDelegate mainMenuController].multiGameMenu.turnBasedMenu reloadTableView];
           }

       } ];
}

分数是设备上的本地分数,对吗?如果是这样,我会做以下工作:

  if([part.playerID isEqualToString [GKLocalPlayer localPlayer].playerID]]) {

 if(points>scoreToBeat) {

part.matchOutcome = GKTurnBasedMatchOutComeWon;

} else {

part.matchOutcome = GKTurnBasedMatchOutComeLost;

} 

} else { 
    if(points>scoreToBeat) {
               part.matchOutcome=GKTurnBasedMatchOutcomeLost;   
           } else {
               part.matchOutcome=GKTurnBasedMatchOutcomeWon;
           }

       }
}
此外,记住使用NSLog查看要击败的分数是否实际转移。要继续使用currentTurnBasedMatch.matchData,可能会犯一个错误,您应该将委托方法中返回的currentTurnBasedMatch设置为GKTurnBasedMatch

编辑:我使用的代码截取如下

if([participant.playerID isEqualToString:[GKLocalPlayer localPlayer].playerID]){
        NSLog(@"we are the last player in the game -end the game");
        for (GKTurnBasedParticipant *part in match.participants) {

            part.matchOutcome = GKTurnBasedMatchOutcomeTied;
        }
       [match endMatchInTurnWithMatchData:match.matchData completionHandler:^(NSError *error) {
           if ([AppDelegate mainMenuController].multiGameMenu.turnBasedMenu !=nil) {

               [[AppDelegate mainMenuController].multiGameMenu.turnBasedMenu reloadTableView];
           }

       } ];
}

这是我最新项目的摘录,适合2人游戏。它在sendTurn过程中调用,此时游戏决定结束。在我看来,这比前面的答案(第一个代码块)更正确,因为在结束游戏之前,必须为所有参与者设置匹配结果

如果你有两个以上的玩家,那么你必须循环所有参与者,并相应地设置比赛结果

   GKTurnBasedParticipant *curr = currentMatch.currentParticipant;
    NSUInteger currentIndex = [currentMatch.participants indexOfObject:currentMatch.currentParticipant];
    NSUInteger nextIndex = (currentIndex + 1) % [currentMatch.participants count];
    GKTurnBasedParticipant *next = [currentMatch.participants objectAtIndex:nextIndex];

    if (currScore < otherScore)
    {
        // Curr player lost
        curr.matchOutcome = GKTurnBasedMatchOutcomeLost;
        next.matchOutcome = GKTurnBasedMatchOutcomeWon;
    }
    else if (currScore == otherScore)
    {
        // Tied
        curr.matchOutcome = GKTurnBasedMatchOutcomeTied;
        next.matchOutcome = GKTurnBasedMatchOutcomeTied;
    }
    else 
    {
        // Won
        curr.matchOutcome = GKTurnBasedMatchOutcomeWon;
        next.matchOutcome = GKTurnBasedMatchOutcomeLost;
    }
GKTurnBasedParticipant*curr=currentMatch.currentParticipant;
NSUInteger currentIndex=[currentMatch.participants indexOfObject:currentMatch.currentParticipant];
NSUTEGER nextIndex=(currentIndex+1)%[currentMatch.participants count];
GKTurnBasedParticipant*next=[currentMatch.participants对象索引:nextIndex];
如果(当前分数<其他分数)
{
//咖喱选手输了
curr.matchoutput=GKTurnBasedMatchOutcomeLost;
next.matchOutcome=GKTurnBasedMatchOutcomeWon;
}
else if(currScore==其他分数)
{
//捆绑
curr.matchOutcome=gkturnbasedMatchoutcometed;
next.matchOutput=gkturnBasedMatchOutcometed;
}
其他的
{
//赢得
curr.matchOutcome=GKTurnBasedMatchOutcomeWon;
next.matchoutput=GKTurnBasedMatchOutcomeLost;
}
请注意,根据设计,您将在两台设备上看到“赢”


一个会说“我”下面有“赢”,另一个会说“(获奖者姓名)”下面有“赢”。

这是我最新项目的摘录,适合2人游戏。它在sendTurn过程中调用,此时游戏决定结束。在我看来,这比前面的答案(第一个代码块)更正确,因为在结束游戏之前,必须为所有参与者设置匹配结果

如果你有两个以上的玩家,那么你必须循环所有参与者,并相应地设置比赛结果

   GKTurnBasedParticipant *curr = currentMatch.currentParticipant;
    NSUInteger currentIndex = [currentMatch.participants indexOfObject:currentMatch.currentParticipant];
    NSUInteger nextIndex = (currentIndex + 1) % [currentMatch.participants count];
    GKTurnBasedParticipant *next = [currentMatch.participants objectAtIndex:nextIndex];

    if (currScore < otherScore)
    {
        // Curr player lost
        curr.matchOutcome = GKTurnBasedMatchOutcomeLost;
        next.matchOutcome = GKTurnBasedMatchOutcomeWon;
    }
    else if (currScore == otherScore)
    {
        // Tied
        curr.matchOutcome = GKTurnBasedMatchOutcomeTied;
        next.matchOutcome = GKTurnBasedMatchOutcomeTied;
    }
    else 
    {
        // Won
        curr.matchOutcome = GKTurnBasedMatchOutcomeWon;
        next.matchOutcome = GKTurnBasedMatchOutcomeLost;
    }
GKTurnBasedParticipant*curr=currentMatch.currentParticipant;
NSUInteger currentIndex=[currentMatch.participants indexOfObject:currentMatch.currentParticipant];
NSUTEGER nextIndex=(currentIndex+1)%[currentMatch.participants count];
GKTurnBasedParticipant*next=[currentMatch.participants对象索引:nextIndex];
如果(当前分数<其他分数)
{
//咖喱选手输了
curr.matchoutput=GKTurnBasedMatchOutcomeLost;
next.matchOutcome=GKTurnBasedMatchOutcomeWon;
}
else if(currScore==其他分数)
{
//捆绑
curr.matchOutcome=gkturnbasedMatchoutcometed;
next.matchOutput=gkturnBasedMatchOutcometed;
}
其他的
{
//赢得
curr.matchOutcome=GKTurnBasedMatchOutcomeWon;
next.matchoutput=GKTurnBasedMatchOutcomeLost;
}
请注意,根据设计,您将在两台设备上看到“赢”


一个在下面写着“我”和“赢了”,另一个在下面写着“赢了”的是“(获奖者姓名)。

我把NSLog放在了每个地方。。。它的逻辑是正确的,比如说玩家应该输。在这部分之后,我不会对匹配数据做任何处理。。。只需使用[currentMatch endMatchInTurnWithMatchData:data completionHandler:^(NSError*error){if(error){NSLog(@“%@”,error);}}}];也许这就是问题所在。为了确保,在结束匹配之前调用给定的方法,对吗?因为在你结束一场比赛之前,每个球员都应该有一个比赛结果。你可以试着将比赛结果设置为GKTurnBasedMatchOutcomeLost,让每个玩家都能看到它是否有效(如果不是真的很奇怪的话)。。至于我的应用程序,我在任何情况下都会将结果设置为GKTurnBasedMatchOutcomeTied,因为我使用自定义的表视图来显示游戏,所以游戏结果只是使用matchData在本地计算/决定的。我将所有内容都更改为lost。。两人都被认为是迷路了。因此,显然存在一些错误。仍在尝试修补它。我已经把NSLog的无处不在。。。它的逻辑是正确的,比如说玩家应该输。在这部分之后,我不会对匹配数据做任何处理。。。只需使用[currentMatch endMatchInTurnWithMatchData:data completionHandler:^(NSError*error){