1

私は接続 4 ゲームを作成しています。次のようにクリックします。

    public void mouseClicked(MouseEvent e) {
    xPos = e.getX();
    yPos = e.getY();
    this.repaint();

    x = e.getX(); 
    if(x <= 400) { 
        x = x/48; 
        System.out.println("Column number " + x);
        positions[0][0]=1;
        Component board = e.getComponent();
    }
}

次に、次のようにグリッド上に赤い円を作成するメソッドがあります

    public void fillCircle(Graphics g) {
    {
        g.setColor(Color.red);
        g.fillOval(xPos,yPos,40,40);
    }
}

ただし、クリックすると円が 1 つしか表示されず、再度クリックすると円が削除され、新しい位置に配置されます。

円を削除して新しい場所に配置するだけでなく、そこに残して新しい場所に新しい円を配置するように、塗りつぶし円メソッドに何らかのループを含める必要があると思いますか?

どうすればいいですか?

4

1 に答える 1

4

変数をArrayList上書きしているだけで、クリックしたときに位置を追加する必要があります。x と y の両方の値を保持するクラスを作成できるため、必要なのは 1 つだけです。xPosyPosPositionArrayList

ArrayList<Position> positions = new ArrayList<Position>();

public void mouseClicked(MouseEvent e) {
    positions.add(new Position(e.getX(), e.getY()));

    // ...
}

そしてPositionクラス

class Position {
    public int x;
    public int y;

    public Position(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

次に、関数内にすべての円を描きます

public void fillCircle(Graphics g) {
{
    g.setColor(Color.red);
    for (int i = 0; i < positions.size(); i++)
        g.fillOval(positions.get(i).x, positions.get(i).y, 40, 40);
}

アップデート

これをファイルの一番上に含めます。

import java.util.ArrayList;

これにより、使用する ArrayList ライブラリがインポートされます。

于 2013-03-25T11:52:50.617 に答える