0

マウスで動かしたチェスの駒を再描画しようとしています。move() メソッドは、MouseEvents から取得した後にインスタンス フィールド変数を取り込み、Piece オブジェクトを元の (ソース) の場所から目的地に移動する必要があります。Piece クラスは抽象クラスであり、7 つの異なるサブクラスが含まれていることに注意してください。ただし、マウスイベントが実装され、正しい行と列が出力され、ダミーの部分も出力されますが、新しい場所のオブジェクトは出力されません。理由について何か提案はありますか?

public class Chess extends JComponent implements MouseListener {



     public static final int ROW = 8, COLUMN = 8; 

     private Piece[][] chessPieces=new Piece[ROWS][COLS];



     private int sourceR,destR,sourceC,destC;




 public void  move () {

     chessPieces[destR][destC]=chessPieces[sourceR][sourceC]; 
   //This is not taking the Piece object and moving it to the new place?!



      System.out.print("destR is "+destR+"destC IS "+destC+"sourceR is"
      +sourceR+ "sourceC is "+sourceC+"\n"); 

      chessPieces[sourceR][sourceC]= new Dummy();//removes original piece leaves blank aka dummy 


       repaint();
 }

 public void paintComponent (Graphics h) { 

    Graphics2D g = (Graphics2D)h;
    for(int row = 0; row < ROWS; ++row) {

      for(int col = 0; col < COLS; ++col) {

        theBoard[row][col].paint(g); 
        chessPieces[row][col].paint(g); 
      }
    }


 }


  public void mousePressed(MouseEvent event) {

      sourceR=event.getX()/45; // 
      sourceC=event.getY()/45; //here we get the location of the piece to be MOVED


  }

  public void mouseReleased(MouseEvent event) {

     destR=event.getX()/45; //PLACE IT'S MOVED TO
      destC=event.getY()/45; //PLACE IT'S MOVED TO

     move();
  }

  public void mouseEntered(MouseEvent event) {}

  public void mouseExited(MouseEvent event) {}

  public void mouseClicked(MouseEvent event) {}

 }
4

0 に答える 0