2016-02-26 28 views
0

我試圖在正常的tic tac toe遊戲中每轉之後使X和O的交替,但是當我運行它時,發生的只是它在每次轉動後都會繼續輸出X 。這是爲什麼發生?如何使X和O的交替

import java.util.Scanner; 
public class TicTacToe{ 
    public static void main(String[] args){ 
     Scanner reader = new Scanner(System.in); 
     Scanner numreader = new Scanner(System.in); 

     TicTacToeBoard board = new TicTacToeBoard(620,720); 
     board.setFiles("X.png", "O.jpeg"); 
     int[][] lines = new int[4][4]; 

     lines[0][0] = 0; 
     lines[0][1] = 200; 
     lines[0][2] = 600; 
     lines[0][3] = 200; 

     lines[1][0] = 0; 
     lines[1][1] = 400; 
     lines[1][2] = 800; 
     lines[1][3] = 400; 

     lines[2][0] = 200; 
     lines[2][1] = 600; 
     lines[2][2] = 200; 
     lines[2][3] = 0; 

     lines[3][0] = 400; 
     lines[3][1] = 600; 
     lines[3][2] = 400; 
     lines[3][3] = 0; 
     board.defineBoard(lines); 
     int counter = 0; 

     char[][] arr= { 
         {'-','-','-'}, 
         {'-','-','-'}, 
         {'-','-','-'}, 
        }; 
     board.setBoard(arr); 
     int a = 0; 


     for(int i = 0; i<9; i++){ 

     System.out.println("Enter what row:"); 
     int y = numreader.nextInt(); 

     System.out.println("Enter what column:"); 
     int z = numreader.nextInt(); 

     if(arr[y][z]=='-'){ 
      arr[y][z]='x'; 
      board.setBoard(arr); 
      board.repaint(); 
      counter ++;} 
     else 
      System.out.println("This is not allowed"); 
     } 
    } 
} 
+1

請在下次格式化一些代碼;) – martijnn2008

+0

我懷疑下面提供的答案中的一些回答你的問題。如果他們這樣做,請接受其中之一。如果他們不這樣做,請編輯您的問題。謝謝! – GuiSim

回答

0

你總是用 'X' 改變:

arr[y][z]='x' 

你可以這樣做:

if(arr[y][z]=='-'){ 
    if (counter % 2 == 0) arr[y][z]='x'; 
    else arr[y][z]='o'; 

    board.setBoard(arr); 
    board.repaint(); 
    counter ++; 
} 

當計數器爲偶數時,更改爲 'X'。當奇怪的時候,你變成'o'。

2

您的代碼似乎明確設置爲x

arr[y][z]='x'; 

我懷疑你會希望像

arr[y][z]= counter % 2 == 0 ? 'x' : 'o'; 

同時,要小心。無論輸入是否有效,您在「輸入行/列」代碼時都會迭代9次。這意味着如果你輸入一個無效的行/列組合,你最終會得到一個8回合的遊戲。

0

嘗試推行類似,而不是按照你arr[y][z]='x';線:

if (counter % 2 == 0) 
    arr[y][z]='x'; 
else 
    arr[y][z]='o'; 

因此,這將替代基礎上,counter值(即,如果計數器是偶數,那麼它的「X輪到,否則它的‘O’ )

我希望幫助

0

因爲你總是將其設置爲 'X' 的位置:arr[y][z]='x';。你需要有一個條件,你把這個值交給'x'和'o'。像你在每次迭代時設置和重置的標誌,以確定是否需要'x'或'o'。