我正在制作一个连接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放在新位置,但它会将其留在那里并在新位置放置一个新圆圈?
我该怎么做?
答案 0 :(得分:4)
您需要将位置添加到ArrayList
或其他内容,因为您只需在点击时覆盖变量xPos
和yPos
。我们可以创建一个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库。