2017-03-03 238 views
0
public class XO { 
    private String name; 
    private static int turn = 1; 

    public XO(String name) { 
     if (2 % turn == 0) { 
      turn++; 
      name = "X"; 
     } 
     else { 
      turn++; 
      name = "O"; 
     } 

    } 
    //set method 
    public void setName(String name) { 
     this.name = name; 
    } 
    //public void setTurn(int turn){ 
    //this.turn=0; 
    //} 
    //get method 
    public String getName() { 
     return name; 
    } 
    public int getTurn() { 
     return turn; 
    } 

    public boolean equals(XO obj) { 
     return name == obj.getName(); 
    } 

    public String toString() { 
     return "You are " + name; 
    } 
} 


import java.util. * ; 

public class TicTacToeBoard extends Board { 
    private int turnCnt; 
    private XO[][] board; 

    public TicTacToeBoard(int rows, int columns) { 
     super(rows, columns); 
     turnCnt = 0; 
     this.board = new XO[rows][columns]; 
    } 
    //set method 
    public void setBoard(XO[][] board) { 

     for (int i = 0; i < 2; i++) { 
      for (int j = 0; j < 2; j++) { 
       board[i][j] = board.getName(); 
      } 
     } 

    } 
    //get methods 
    public XO[][] getBoard() { 
     return board; 
    } 

    public int getTurnCnt() { 
     return turnCnt; 
    } 
    //print board 
    public void printBoard() { 
     for (int i = 0; i < board.length; i++) { 
      System.out.println("\n"); 
      for (int j = 0; j < board[i].length; j++) { 
       System.out.print(board[i][j] + " "); 
      } 

     } 
    } 
    //add X or O 
    public boolean add(int r, int c) { 
     XO[][] j = new XO[r][c]; 
     if (r > 2 && c > 2 || this.board.equals(j)) return false; 
     else 

     //setBoard(j); 
     return true; 

    } 
    //check win 
    public boolean win(XO a, XO b) { 
     //player 1 wins 
     if (board[0][0] == a && board[1][0] == a && board[2][0] == a) { 
      return true; 
     } 
     if (board[0][1] == a && board[1][1] == a && board[2][1] == a) { 
      return true; 
     } 
     if (board[0][2] == a && board[1][2] == a && board[2][2] == a) { 
      return true; 
     } 
     if (board[0][0] == a && board[0][1] == a && board[0][2] == a) { 
      return true; 
     } 
     if (board[1][0] == a && board[1][1] == a && board[1][2] == a) { 
      return true; 
     } 
     if (board[2][0] == a && board[2][1] == a && board[2][2] == a) { 
      return true; 
     } 
     if (board[0][0] == a && board[1][1] == a && board[2][2] == a) { 
      return true; 
     } 
     if (board[2][0] == a && board[1][1] == a && board[0][2] == a) { 
      return true; 
     } 
     //now player 2 wins 
     if (board[0][0] == b && board[1][0] == b && board[2][0] == b) { 
      return true; 
     } 
     if (board[0][1] == b && board[1][1] == b && board[2][1] == b) { 
      return true; 
     } 
     if (board[0][2] == b && board[1][2] == b && board[2][2] == b) { 
      return true; 
     } 
     if (board[0][0] == b && board[0][1] == b && board[0][2] == b) { 
      return true; 
     } 
     if (board[1][0] == b && board[1][1] == b && board[1][2] == b) { 
      return true; 
     } 
     if (board[2][0] == b && board[2][1] == b && board[2][2] == b) { 
      return true; 
     } 
     if (board[0][0] == b && board[1][1] == b && board[2][2] == b) { 
      return true; 
     } 
     if (board[2][0] == b && board[1][1] == b && board[0][2] == b) { 
      return true; 
     } 
     else return false; 
    } 

    public String toString() { 
     return board[0][0] + "\t" + board[1][0] + "\t" + board[2][0] + "\n" + board[0][1] + "\t" + board[1][1] + "\t" + board[1][2] + "\n" + board[0][2] + "\t" + board[1][2] + "\t" + board[2][2]; 
    } 
} 

嗨,我正在做一個有關創造性的戰術遊戲在Java中的任務。這些是我的代碼。該指南指出,XO類應該保存關於「X」或「O」對象的信息。將對象添加到二維數組

該類應該有兩個屬性:一個名稱(它是一個字符串「X」或「O」)和一個靜態int變量,它被設置爲0或1(它應該被初始化爲1)。您將使用此變量來確定在創建對象時要爲其指定的名稱(例如,如果它是1,請將名稱設置爲「X」)。

我不知道如何使用轉向變量,我知道我應該將2個對象的X O傳遞給2d數組,但我對如何將對象傳遞到2d數組有點模糊。同時,我想先打印板就像一個空白的矩陣,但它始終是 [空空空, 空空空 空空空]

任何幫助將.Thanks很多感謝!

回答

0

林不知道如何使用轉可變

在XO構造函數的轉彎變量保持跟蹤誰在把它通過檢查2模(轉數)。所以如果它變成了1:那麼2%1是1,所以名稱變量被設置爲'O'。對於第2輪:2%2 == 0,名稱被設置爲'X'。 這基本上採用的是簡單的模測試,以檢查是否又將是偶數或奇數..

但我是一個有點模糊有關如何將對象傳遞到二維數組

這是你的代碼?好像你知道如何操作二維數組了。陣列[行] [列]。你能詳細說明將對象傳入二維數組中的哪一部分,你遇到了麻煩?在您的setBoard函數中,您可能希望基於在實例化TicTacToe類時聲明的行和列的長度進行動態迭代。

,也是我要打印板像在第一空白矩陣,但它始終是[空空空,空空空空空空]

您可以打印表樣通過在您的迭代中正確打印輸出。嘗試改變你的Board.toString()函數是這樣的。

for(XO[] row : board){ 
     for(XO item : row){ 
      System.out.print(item.getName()); 
     } 
     System.out.print('\n'); 
    } 

應該改變輸出到看起來像 -

XXX

XXX

XXX

編輯:如果你希望成爲這個心不是裝滿一個空白矩陣您將需要將所有XO實例實例化爲默認值,或者您可以添加一個測試if語句來測試該值是否爲null,以及打印佔位符字符。

+0

我不知道如何將x o對象添加到電路板。是這樣的public boolean add(int r,int c){ \t \t XO [] [] player = new XO [r] [c]; \t \t if(r> 3 && c> 3) \t \t \t return false; \t \t else \t \t \t xo [r] [c] = player; \t \t \t // setBoard(j); \t \t \t turnCnt ++; \t \t \t return true; \t \t \t} – Ratata4