Кнопка play для нескольких игроков в игре ios с использованием spritebuilder
Я делаю настольную игру в стиле игры. Есть два игрока, игрок 1 и игрок 2. Игрок 1 запускается нажатием кнопки воспроизведения игрока 1. Их спрайт перемещается вперед на случайное количество тайлов. Затем игрок 2 начинает свой ход, нажимая кнопку воспроизведения игрока 1. В конце каждого хода я записывал, чей это был ход, когда я нажимал кнопку воспроизведения плеера 2 после нажатия кнопки воспроизведения плеера 1. Журналы говорят, что это еще ход игрока 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
1 ответ
Вот что ваш код делает в действительности:
- player1Play
- set isPlayer1Turn = YES
- set isPlayer1Turn = NO
- player2Play
- set isPlayer1Turn = YES
- NSLOG isPlayer1Turn
Я не уверен, почему вы беспокоитесь об отслеживании playerTurn, так как у вас есть 2 кнопки, предназначенные для задачи, и не запрещайте использовать кнопку, если это не правильный ход игрока, а оператор if в -(void)player2Play:
if (isPlayer1turn == YES)
вероятно, должно быть isPlayer1Turn == NO
для вашей конкретной логики. Но вместо того, что вы делаете, вы можете захотеть сделать что-то вроде использования вашего логического значения isPlayer1Turn, чтобы определить, как может выглядеть и работать одна кнопка Play.
-(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
}
}