第一次打听nn
我正在为拼贴下棋(还处于早期阶段),我在移动棋子时遇到问题。我将复制似乎给我带来麻烦的代码并解释:
public void choosePiece(int x, int y){
GUI.recolour();
if(active==null){
if(gameArray[x][y].isWhite()==whiteActive){
active=gameArray[x][y];
GUI.displayMoves(showMoves(active));
}
}else{
if(gameArray[x][y]==null){
gameArray[x][y]=active;
gameArray[x][y].setCoordinades(x,y);
gameArray[active.getX()][active.getY()]=null;
active=null;
}else if(gameArray[x][y].isWhite()==whiteActive){
active=gameArray[x][y];
GUI.displayMoves(showMoves(active));
}else{
if(whiteActive)
blackDied.add(gameArray[x][y]);
else
whiteDied.add(gameArray[x][y]);
gameArray[x][y]=active;
gameArray[x][y].setCoordinades(x,y);
gameArray[active.getX()][active.getY()]=null;
active=null;
}
guiRefresh();
}
}
用户应该单击板上的一块(JButton 网格),GUI 类将调用带有所述 JButton 坐标的 GameHandler 类。
此代码应该从 JButton 网格中获取那些 x;y 坐标,并检查是否没有活动片段;如果是这样,则选择 gameArray[x][y](从一组棋子中选出一个棋子)作为活动棋子,并在 JButton 网格中显示将 JButton 背景更改为绿色的可用移动。
如果已经有一个活动部分,它应该检查 x;y 目标是否为空或另一个部分:
第一种情况,它会将活动部分放置在空白空间中。如果目标 x;y 中有另一块,它将检查该块是否来自其他颜色。
如果它是相同的颜色,它会改变活跃的棋子,并显示它的动作。如果它是另一种颜色,它将“杀死”该部分,并将其替换为活动部分。
请注意,所有其他空按钮,除了那些可以到达的部分都未启用。最后一个 guiRefresh() 方法遍历整个 gameArray 并要求 GUI 在 x,y 位置放置一个代表 X 类型棋子的按钮。我使用网格布局从 8x8 按钮矩阵中添加按钮。
好吧..这听起来对我有用..但它没有:S 照原样,当 A 吃 B 时,B 从板上消失了,但 A 永远不会被放置而不是 B.. 它保持不变.. 但是如果再次单击 A,显示可能运动的绿色按钮看起来好像 A 实际上在 B 中。