2016-08-04 8 views
0

私は小さなティックタックのつま先のゲームを作成し始めました。これは、ループが再び通過するたびに、オブジェクトの位置を変更することによって 'X'と 'O'の間で切り替える必要があります。ループ内でオブジェクトが更新されない

int m=0; 
    while(m<=3){ 
    Test t=new Test(); 
    User use= t.turn(); 
    System.out.println(use); 

    char[][] board=new char[3][3]; 


    System.out.println(" 1 2 3"); 

    for(int y=0;y<board.length;y++){ 

     System.out.print(y+1); 
     for(int x=0;x<board.length;x++){ 

      board[x][y]=use.getMark(); 
      System.out.print("|"+board[x][y]+"|"); 
     } 

     System.out.println(); 
     m++; 
     } 
    } 
} 

しかし、たびに「X」が出力されているようです。これはなぜですか、どうすれば修正できますか?

UPDATE:これが必要な場合、私は知らないが、私が使用するオブジェクトを私の番方法からコード決定を持っている:

public User turn(){ 

    User use; 
    PlayerX playX=new PlayerX(); 
    PlayerO playO=new PlayerO(); 
    Board board=new Board(); 
    int xturn=playX.getTurn(); 
    int oturn=playO.getTurn(); 

    if(xturn<=oturn){ 
     use=playX; 
     System.out.println("X"); 
     xturn++; 
    }else{ 
     use=playO; 
     System.out.println("O"); 
     oturn++; 
    } 
    System.out.println(xturn); 
    System.out.println(oturn); 
    return use; 
} 


package TicTacToe; 

パブリッククラスユーザー{

private int XCoord; 
private int YCoord; 
private int Turn=0; 
private char Mark; 

public int getX(){ 
    return XCoord; 
} 
public int getY(){ 
    return YCoord; 

} 
public int getTurn(){ 
    return Turn; 

} 
public char getMark(){ 
    return Mark; 
} 

}

UPDATE 2:

だから私は私の問題の大半に、私はまだだ唯一のものを修正しましたループが実行されるたびに再作成されるのではなく、ループの中でオブジェクトを再利用する方法があるのでしょうか(不思議です)毎回私の回転変数を0に更新することを望まないので、これを尋ねます。

+2

私たちに 'Test'と' User'クラスを見せてください。あなたの質問に答えられるのに十分な情報がありません – flakes

+1

毎回新しいボードを作成するのはなぜですか? – Li357

+0

'System.out.println(use);' print? –

答えて

0

forループの中でuse.getMark()を呼び出すと、boardの値が設定されます。 use変数が変更されていない場合、これは各反復で同じ値を返す可能性があります(内部で反復しない限り設計上の欠陥を示す可能性があります)。ボードをUser[][]に変更し、board[x][y].getMark()を使用して 'マーク'を取得することができます。

しかし、もっと基本的には、あなたのコードを使って単体テストを構築することによって、ソフトウェアを動作させる最も良い方法があります。ボードの印刷などを試す前に、UserPlayerのテストが必要です。あなたが開発したときに単体テストを学ぶならば、問題はずっと少なくて済み、あなたが持っているものは簡単に診断して修正することができます。 printステートメントを使用して問題を診断するよりもはるかに持続可能なアプローチです。

使用しているモデルは非常に珍しいです。あなたのメソッドが他のオブジェクトからアクセスできない配列によって表されるボードを持つ理由は不明です。それはかなり意味がないようです。私はあなたがクラスBoardPlayerMoveを適切に分担することをお勧めします。

関連する問題