2014-02-12 2 views
0

Я создаю игру TicTacToe, используя командную строку в Xcode. У меня все работает нормально, но я не могу понять, как избежать того, чтобы игрок взял место у других игроков. Поэтому, если игрок выбирает место [1] [1], если любой игрок входит в точку [1] [1] на протяжении всей игры, они получат «Недопустимый вход, попробуйте еще раз», и им придется выбирать другое место. Какие-либо предложения?Проверка платы TicTacToe

- (void) getChoice1 
{ 
    do 
    { 
     if (player == 1 && winner == 0 && turns < 9) 
     { 
      do { 
      //player 1's input 
      NSLog(@"Player 1, please choose a cell."); 
      NSLog(@"Enter row number(1, 2, or 3)."); 
      scanf("%ld", &row); 
      } while ((row != 1 && row != 2 && row != 3)); 

     do{ 
     NSLog(@"Enter column number(1, 2, or 3)."); 
     scanf("%ld", &column); 
     } while ((column != 1 && column != 2 && column != 3)); 


     //decrement players input -1 
     row--; 
     column--; 

     //ensure spot is unselected 
     if (arr[row][column] == 1 || arr[row][column] == 2) { 
      NSLog(@"Invalid entry, try another spot"); 

      [self getChoice1]; 
     } 
     else 
     { 

      //add input to board 
      arr [row][column] = 1; 

      //display updated board 
      [self showBoard]; 

      //switch players 
      player = 2; 

      //add a turn 
      turns++; 

      //check for winner 
      [self checkWinner]; 
     } 
    }  
} while (turns < 9 && winner == 0); 

}

ответ

0

С помощью друга я понял, что мне нужно полностью перестроить метод. Вот мой рабочий ответ.

do 
    { 
     if (winner == 0 && turns < 9) 
     { 
      do { 
      //player 1's input 
      if (player == 1) { 
       NSLog(@"Player 1, please choose a cell."); 
      } else { 
       NSLog(@"Player 2, please choose a cell."); 
      } 
      NSLog(@"Enter row number(1, 2, or 3)."); 
      scanf("%ld", &row); 
      } while ((row != 1 && row != 2 && row != 3)); 
      do{ 
      NSLog(@"Enter column number(1, 2, or 3)."); 
      scanf("%ld", &column); 
      } while ((column != 1 && column != 2 && column != 3)); 
      //decrement players input -1 
      row--; 
      column--; 
      //add input to board 
      if (arr [row][column] == 0) { 
       arr [row][column] = player; 
       if (player == 1) { 
        player = 2; 
       } else { 
        player = 1; 
       } 
       //display updated board 
       [self showBoard]; 
       //add a turn 
       turns++; 
      } else { 
       NSLog (@"Cell already used pick a different cell."); 
      }    
      //check for winner 
      [self checkWinner]; 
     } 
    } while (turns < 9 && winner == 0); 
} 
0

Вы должны сделать userInteraction отключены для этого блока.

Например, если block1 касания сделать:

block1.userInteractionEnabled = NO; 

Однажды, игра завершена, сделайте userInteractionEnabled обозревает все блоки снова YES.

Это будет работать так же, как я сделал одну подобную игру.

В случае командной строки, вы можете установить некоторые переменные, например, если для й набора 1, для 0 набора 2, для не играть не установлен 0.

Затем, когда кто-то новый пресс-там проверить на 1 и 2 и сделайте необходимое

+0

Он упомянул о своей командной игре. – Anil

+0

@samkit, Анил правильный. Это в командной строке. Может быть, я не был ясен. Я создал доску, которую я вызываю, после того, как очередь каждого игрока завершена. В течение каждого хода, если игрок выбирает место, которое уже было выбрано, им нужно сказать, чтобы выбрать другое место. – jsollo2

+0

См. Мое редактирование ...... –

Смежные вопросы