gpt4 book ai didi

java - 棋盘棋子移动

转载 作者:行者123 更新时间:2023-12-01 15:02:21 26 4
gpt4 key购买 nike

第一次询问n.n

我正在为拼贴做一盘国际象棋(还处于早期阶段),并且我在移动棋子时遇到问题。我将复制似乎给我带来麻烦的代码并解释一下:

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 坐标,并检查是否没有 Activity block ;如果是这样,则选择 gameArray[x][y](棋子数组中的棋子)作为 Activity 棋子,并在 JButton 网格中显示可用的移动,将 JButton 背景更改为绿色。

如果已经有一个 Activity block ,它应该检查 x;y 目标是否为空或另一个 block :

第一种情况,它将把 Activity 的棋子放置在空白处。如果目标x;y中有另一 block ,它将检查该 block 是否来自其他颜色。

如果颜色相同,则会改变当前棋子,并显示其走法。如果是其他颜色,它将“杀死”该棋子,并将其替换为 Activity 棋子。

请注意,除了该片段可到达的按钮之外,所有其他空按钮均未启用。最后一个 guiRefresh() 方法遍历整个 gameArray 并要求 GUI 在 x,y 位置放置一个代表 X 类型棋子的按钮。我使用网格布局从 8x8 按钮矩阵添加按钮。

嗯..这对我来说听起来像是工作..但事实并非如此:S 照原样,当A吃B时,B从棋盘上消失,但A永远不会代替B..它保持不变。 .但是如果您再次单击 A,显示可能移动的绿色按钮就会出现,就好像 A 实际上位于 B 中一样。

最佳答案

如果 setCooperatives 正在更改 getX()getY() 返回的内容,则以下语句的顺序错误:

gameArray[x][y].setCoordinades(x,y);
gameArray[active.getX()][active.getY()]=null;

关于java - <Java> 棋盘棋子移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13459976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com