我正在尝试使用 Java 的 Swing 库构建一个带有 GUI 界面的国际象棋游戏。当我开始游戏时,会打开一个带有棋盘的窗口。
我所坚持的是,每次我都想等待当前玩家采取行动,而不是无限地运行 while 循环,因为这不是很有效。
这是代码和之后的解释:
private void startGame()
{
while (!board.terminalBoard())
{
Move movePlayed = null;
// whilist making the move returns false, meaning we cant do it...
while (canMakeMove(movePlayed))
{
// TODO: Implement the getting move here
}
// If move is okay, make it
board.movePiece(movePlayed.getStart(), movePlayed.getEnd());
// Repaint the chessboard
chessboard.loadImages(board);
chessboard.repaintBoard();
currColor ^= Piece.BLACK;
}
}
Run Code Online (Sandbox Code Playgroud)
在内部 while 循环中,当用户所下的棋步无效时,它会再次迭代并等待下一个棋步。我不明白的是我如何等待玩家采取行动。
就我而言,玩家可以通过在棋盘上单击两次(源方格和目标方格)来进行移动。然后我的函数检查它是否有效。
如何等待用户在 Java Swing 窗口上单击两次?
编辑代码:问题是,如果我像你说的那样删除 thread.sleep,应用程序不会响应我的点击。
private void startGame()
{
while …Run Code Online (Sandbox Code Playgroud)