0

我正在制作棋盘游戏风格的游戏。有两个玩家,玩家 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);

}

- (void)player2play {
if (isPlayer1turn == YES)
{
    isPlayer1turn = NO;
    CCLOG(@"Beggining of player 2'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];
}
isPlayer1turn = TRUE;
    CCLOG(@"End of player 2'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

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

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
4

1 回答 1

0

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

  1. player1播放
  2. 设置 isPlayer1Turn = YES
  3. 设置 isPlayer1Turn = NO
  4. 播放器2播放
  5. 设置 isPlayer1Turn = YES
  6. NSLOG isPlayer1转

我不确定你为什么要跟踪 playerTurn,因为你有 2 个专用于任务的按钮,如果轮到正确的玩家,不要阻止按钮的使用,但是 -(void)player2Play 中的 if 语句:

if (isPlayer1turn == YES)

可能应该是isPlayer1Turn == NO针对您的特定逻辑的。但是,您可能想做的不是您正在做的事情,而是使用您的 isPlayer1Turn 布尔值来确定单个播放按钮的外观和功能。

-(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
    }
}
于 2014-06-19T01:54:52.757 回答