循环以在单击鼠标时重复操作

时间:2013-03-25 11:45:49

标签: java loops

我正在制作一个连接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);
    }
}

但是,点击时只显示一个圆圈,当您重新点击时,圆圈会被移除并放置在新位置。

我相信我需要在填充圆方法中包含某种循环,这样它就不会摆脱圆圈并将onew放在新位置,但它会将其留在那里并在新位置放置一个新圆圈?

我该怎么做?

1 个答案:

答案 0 :(得分:4)

您需要将位置添加到ArrayList或其他内容,因为您只需在点击时覆盖变量xPosyPos。我们可以创建一个Position类来保存x和y值,这样我们只需要一个ArrayList

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库。