我试图将一块棋子从一个网格中的一个正方形移动到另一个正方形,先点击该棋子,然后点击正方形移动它。
如何保存第一个图标的位置,然后将其与第二个图标交换?
目前,我正在查看此代码,该代码只是向左移动一个方块:
public void actionPerformed(ActionEvent e)
{
for ( x=0; x<8; x++)
for( y=0; y<8; y++) {
if(e.getSource() == board[x][y])
((ChessSquare)e.getSource()).swap(board[x][y-1]);
}
}
答案 0 :(得分:1)
boolean drag
并根据需要设置true
/ false
。..存储坐标的最佳位置?
我会使用2个int
属性,但如果你想滥用Dimension
个对象,只需要存储x&amp; y co-ords。
..不,废弃了。使用mKorbel指示的客户端属性似乎更“整洁”。
答案 1 :(得分:0)
如果flag = false,则首先单击,否则为第二次单击(这是 我们将执行交换的地方。
public void actionPerformed(ActionEvent e)
{
int xPos1,xPos2,yPos1,yPos2;
if(!flag)
{
for ( x=0; x<8; x++)
{
for( y=0; y<8; y++)
{
if(e.getSource() == board[x][y])
{
xPos1 = x; // Source icon cordinates.
yPos2 = y;
break;
}
}
}
flag = true;
}
else
{
for ( x=0; x<8; x++)
{
for( y=0; y<8; y++)
{
if(e.getSource() == board[x][y])
{
xPos2 = x; // Target icon cordinates.
yPos2 = y;
break;
}
}
}
// Swapping code add your version of this swapping code here.
// Swap source with target.
Icon temp = board[xPos1][yPos1]
board[xPos1][yPos1] = board[xPos2][yPos2];
board[xPos2][yPos2] = temp;
// ----------------- End Swap----------------
flag = false; // ready for next swap operation.
}
}