2016-11-19 4 views
0

私はチェッカーの自分のバージョンを作ろうとしていて、現在はボードとその作品を保存するコードを書いています。Javaでグラフィックスをレイヤーするには?

コードを実行するたびに、ボードがいくつかの部分に描画されているため、別の結果が得られます。私はどのようにすべての作品を常にボード上に表示させるのですか?私は同様の質問がされていることを理解していますが、有用な助けを提供していません。

ここでボードを描画されているコードです:

public static void setPieces() { 
    posX = 0; 
    posY = 0; 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 4; j++) { 
      aryPiecePos[posX][posY] = SQUARE_STATE_RED; 
      board.repaint(board.getCoordX(posX), board.getCoordY(posY), Color.RED); 
      posX += 2; 
     } 
     posX = (posX == 8 ? 1 : 0); 
     posY += 1; 
    } 
    posX = 1; 
    posY = 5; 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 4; j++) { 
      aryPiecePos[posX][posY] = SQUARE_STATE_BLACK; 
      board.repaint(board.getCoordX(posX), board.getCoordY(posY), Color.BLACK); 
      posX += 2; 
     } 
     posX = (posX == 8 ? 1 : 0); 
     posY += 1; 
    } 
} 

はまたここにすべての私のコードへのリンクです:ここで はへのハイパーリンクです

public void paint(Graphics gr) { 
    Graphics2D gr2D = (Graphics2D) gr; 
    gr2D.setColor(color1); 
    BasicStroke stroke = new BasicStroke(strokeThickness, 
      BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND); 
    gr2D.setStroke(stroke); 

    for (int i = 0; i < 8; i++) { 
     for (int j = 0; j < 8; j++) { 
      gr.setColor((gr.getColor() == color2) 
        ? color1 : color2); 
      gr.fillRect((int) (start + CHANGEVAL * i), 
        (int) (start + CHANGEVAL * j), 
        (int) CHANGEVAL, 
        (int) CHANGEVAL); 
     } 
     gr.setColor((gr.getColor() == color2) 
       ? color1 : color2); 
    } 
} 

そしてここでは、作品を描くコードですが、私が現在持っているもの:https://drive.google.com/open?id=0B2uJqRSB8ckHYW53NmZsZDdxWWs

答えて

0

あなたが最初に描くものは、いわばより深い層にあります。

g.setColor(Color.BLUE); 
g.fillRect(x, y, width, height); 
g.setColor(Color.GREEN); 
g.fillRect(x, y, width, height); 

上記のコードでは、緑色の矩形が上に描画されるため、青色の矩形は表示されません。

したがって、問題を解決するには、ボードを最初に描画し、次にすべての部分を描画する必要があります。

関連する問題