Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
使用spritebuilder在ios游戏中为多个玩家播放按钮_Ios_Objective C_Spritebuilder - Fatal编程技术网

使用spritebuilder在ios游戏中为多个玩家播放按钮

使用spritebuilder在ios游戏中为多个玩家播放按钮,ios,objective-c,spritebuilder,Ios,Objective C,Spritebuilder,我正在制作一款棋盘游戏风格的游戏。有两个玩家,玩家1和玩家2。播放器1通过按下播放器1播放按钮开始。他们的精灵向前移动随机数量的瓷砖。然后玩家2按下玩家1的播放按钮开始他们的回合。在每个回合结束时,我都会记录下在按下播放器1播放按钮后按下播放器2播放按钮的回合。它记录说现在仍然轮到玩家1。为什么会这样?这是我的代码: - (void)player1play { isPlayer1turn = YES; CCLOG(@"Beggining of player 1's turn"); NSLog(@

我正在制作一款棋盘游戏风格的游戏。有两个玩家,玩家1和玩家2。播放器1通过按下播放器1播放按钮开始。他们的精灵向前移动随机数量的瓷砖。然后玩家2按下玩家1的播放按钮开始他们的回合。在每个回合结束时,我都会记录下在按下播放器1播放按钮后按下播放器2播放按钮的回合。它记录说现在仍然轮到玩家1。为什么会这样?这是我的代码:

- (void)player1play {
isPlayer1turn = YES;
CCLOG(@"Beggining of player 1's turn");
NSLog(@"%hhd", isPlayer1turn);
if (_randNumLabel == nil)
{
    CCLOG(@"Nil");
}
if (_randNumLabel !=nil)
{
CCLOG(@"play button pressed!");
int max = 6;
int randNumber = (arc4random() % max) + 1; // Generates a number between 1-6.
CCLOG(@"Random Number %d", randNumber);
_randNumLabel.string = [NSString stringWithFormat:@"Number: %d", randNumber];
}
//Movement code
isPlayer1turn = NO;
CCLOG(@"End of player 1's turn");
NSLog(@"%hhd", isPlayer1turn);
}

我怎样才能解决这个问题?还是只有一个播放按钮更好

按下播放器1播放按钮后:

014-06-18 20:50:33.450 Sunk[8091:60b] Beggining of player 1's turn
2014-06-18 20:50:33.451 Sunk[8091:60b] 1
2014-06-18 20:50:33.451 Sunk[8091:60b] play button pressed!
2014-06-18 20:50:33.452 Sunk[8091:60b] Random Number 1
2014-06-18 20:50:33.453 Sunk[8091:60b] End of player 1's turn
2014-06-18 20:50:33.454 Sunk[8091:60b] 0
2014-06-18 20:52:26.666 Sunk[8091:60b] 1
2014-06-18 20:52:26.667 Sunk[8091:60b] play button pressed!
2014-06-18 20:52:26.668 Sunk[8091:60b] Random Number 5
2014-06-18 20:52:26.668 Sunk[8091:60b] End of player 1's turn
2014-06-18 20:52:26.669 Sunk[8091:60b] 0
按下播放器2播放按钮后:

014-06-18 20:50:33.450 Sunk[8091:60b] Beggining of player 1's turn
2014-06-18 20:50:33.451 Sunk[8091:60b] 1
2014-06-18 20:50:33.451 Sunk[8091:60b] play button pressed!
2014-06-18 20:50:33.452 Sunk[8091:60b] Random Number 1
2014-06-18 20:50:33.453 Sunk[8091:60b] End of player 1's turn
2014-06-18 20:50:33.454 Sunk[8091:60b] 0
2014-06-18 20:52:26.666 Sunk[8091:60b] 1
2014-06-18 20:52:26.667 Sunk[8091:60b] play button pressed!
2014-06-18 20:52:26.668 Sunk[8091:60b] Random Number 5
2014-06-18 20:52:26.668 Sunk[8091:60b] End of player 1's turn
2014-06-18 20:52:26.669 Sunk[8091:60b] 0

下面是您的代码实际执行的操作:

  • 播放者1播放
  • 设置isPlayer1Turn=YES
  • 设置isPlayer1Turn=NO
  • player2Play
  • 设置isPlayer1Turn=YES
  • NSLOG isPlayer1Turn
  • 我不知道你为什么要费心跟踪playerTurn,因为你有两个按钮专门用于任务,如果不是正确的玩家轮到你,不要阻止按钮的使用,而是-(void)player2Play中的if语句:

    if (isPlayer1turn == YES)
    
    对于您的特定逻辑,可能假定为
    isPlayer1Turn==NO
    。但是,您可能不想做您正在做的事情,而是想使用ISPlayerTurn布尔值来确定单个播放按钮的外观和功能

    -(void)playButtonPressed{
        if (isPlayer1Turn) {
            //do all the things for player 1
            isPlayer1Turn = NO;
        }else{
            //do all the things for player 2
            isPlayer1Turn = YES;
        }
        [self changeTheOneTruePlayButton];
    }
    
    -(void)changeTheOneTruePlayButton{
        if (isPlayer1Turn) {
            //change play button text to PLAYER 1
        }else{
            //change play button text to PLAYER 2
        }
    }
    

    你能粘贴记录的内容和你认为应该记录的内容吗?刚刚粘贴了,玩家2播放按钮和玩家1播放按钮