2017-09-15 10 views
-2

私はChessプログラムをJavaで書いています。ピースのすべての動きを扱う私のBoardクラスでは、ピースを特定の場所に移動させ、その場所に敵ブロックが存在する場合、それをキャプチャするmovePieceという関数を作成しました。 movePieceのための関数は次のようになります。別のクラスからArrayListにオブジェクトを追加する(JavaのChess)

public void movePiece(int x, int y, Piece pieceToMove) { 

    if(pieceToMove.canMove(board, this.x, this.y, x, y)){ //Check if the piece canMove to the location 

     if(board[x][y] == null) { //Check if the location is empty 

      removePiece(this.x, this.y); 
      board[x][y] = pieceToMove; 

     } else { 

      if(board[x][y].getColor() != pieceToMove.getColor()) { //Check if the location is occupied by an enemy 

       removePiece(this.x, this.y); 
       board[x][y] = pieceToMove; 

      } else { 
       System.out.println("Invalid Move"); 
      } 
     } 

    } else { 

     System.out.println("Invalid Move"); 

    } 
} 

それは正常に動作しますが、私はArrayListの中に捕らえた敵ピースのトラックに維持したいです。だから、私はそれをトラックに保つためにプレーヤークラス内ArrayListのcapturedListを作成し、そして

 if(board[x][y].getColor() != pieceToMove.getColor()) { //Check if the location is occupied by an enemy 

      addCapturedPiece(board[x][y], capturedList); <--- THIS LINE 
      removePiece(this.x, this.y); 
      board[x][y] = pieceToMove; 

     } 

を追加しようとしました。しかしcapturedListプレーヤークラス内にあるので、これは動作しませんでした。これをスムーズにする方法はありますか?

+0

「addCapturedPiece」とは何か、「board [x] [y]」の種類は何ですか? – nullpointer

+0

'movePiece'は何かを行います。その結果はあなたが知りたいことです...' movePiece'は何か起きたことを彼らに話してくれますか? – MadProgrammer

+0

addCapturedPieceは、プレイヤーがキャプチャした部分を追跡するためにPlayerクラスで作成したメソッドです。ボード[x] [y]の種類はPieceです。私は、ボードクラスのaddCapturedPieceを使用して問題を抱えています。 – user6792790

答えて

1

addCapturedPieceはPlayerクラスのメソッドにすることができます。次に、現在のピースを移動しているプレーヤーは、そのメソッドを呼び出して、そのピースを特定のcapturedListに追加することができます。たとえば、:

/***** in Player class *****/ 
private LinkedList<Piece> capturedList = new LinkedList<Piece>(); 
// ... 
private static void addCapturedPiece(Piece p) 
{ 
    capturedList.add(p); 
} 

/***** in your movePiece method *****/ 
player1.addCapturedPiece(board[x][y]); 
関連する問題