小编nor*_*n32的帖子

在每次 while 循环迭代中等待用户鼠标单击

我正在尝试使用 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)

java swing chess

0
推荐指数
1
解决办法
97
查看次数

标签 统计

chess ×1

java ×1

swing ×1