gpt4 book ai didi

java - 如何卡住/保留程序直到用户点击?

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

我在 Java 编程中遇到了一些问题。

我有一个 while 循环,它一直工作到游戏结束,当它运行时,我需要从玩家那里获取移动,我需要程序保持直到玩家单击 JFrame 并做出 Action ,我需要一个像 Scanner 这样的方法,可以通过键盘使用,但可以使用鼠标。

知道如何做吗?

while(!gameOver())
{
if(!rw.board.possibleMoves(rw.board.turn).isEmpty())
{
// needs to wait until the player makes a move
Move m = rw.players[rw.board.turn].move;
rw.board.makeMove(m);
rw.updateNewGame();
}
// switch the turns after the move
rw.players[rw.board.turn].move = null;
rw.board.turn = (rw.board.turn == PLAYER1 ? PLAYER2 : PLAYER1);
}
}

最佳答案

GUI 应用程序是事件驱动的。这意味着您不会创建这样的 while 循环。您让程序进入其自己的事件循环,然后进行移动并切换转弯以响应用户的单击事件。

也就是说,您创建一个单击事件监听器,并在其 actionPerformed() 方法中检查:

if (!gameOver())
{
if(!rw.board.possibleMoves(rw.board.turn).isEmpty())
{
// needs to wait until the player makes a move
Move m = rw.players[rw.board.turn].move;
rw.board.makeMove(m);
rw.updateNewGame();
}
// switch the turns after the move
rw.players[rw.board.turn].move = null;
rw.board.turn = (rw.board.turn == PLAYER1 ? PLAYER2 : PLAYER1);
}

确保此处调用的方法会更改按钮的状态,或在按下按钮不再有意义时将其删除(不可能移动或游戏结束等)。

关于java - 如何卡住/保留程序直到用户点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26955423/

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