2014-02-12 73 views
0

我使用Xcode中的命令行創建TicTacToe遊戲。除了我無法弄清楚如何避免玩家奪取其他玩家位置之外,我已經有了一切正常的工作。因此,如果玩家選擇點[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

你必須讓該塊被禁用的用戶交互。

例如,如果BLOCK1被觸摸,使:

block1.userInteractionEnabled = NO; 

一次,比賽結束後,再次進行userInteractionEnabled來回所有塊YES。

這將工作,因爲我也做了一個類似的遊戲。

在命令行的情況下,你可以設置一些變量,例如,如果對於x設定1,0 2集,因爲沒有遊戲設定0

然後,一旦有人新的新聞有檢​​查1和2並做所需的

+0

他提到了它的命令行遊戲。 – Anil

+0

@samkit,Anil是正確的。它在命令行中。也許我不清楚。我已經創建了一個董事會,我在每個玩家輪到玩家後都會打電話。在每一回閤中,如果玩家選擇已經選擇的地點,他們需要被告知選擇另一地點。 – jsollo2

+0

查看我的編輯...... –