我正在制作一款带有骰子和移动部件的游戏。我想要的是骰子滚动,然后在骰子完成滚动后,我想要棋子移动。我目前有当骰子完成滚动骰子对象告诉碎片开始移动,但我想要一个控制器告诉骰子移动,等待他们完成,然后告诉碎片移动。我尝试过使用。wait()和。notify(),但我真的不知道如何使用它们,最终得到一个InterruptedException。实现这一点的最佳方式是什么?
使用一个javax.swing.Timer
作为骰子,另一个作为棋子;在骰子处理程序中,当确定骰子已完成时,启动棋子计时器。这里有几个例子。
你可能想看看如何在Java中从另一个线程暂停和恢复一个线程。
似乎你不能使用任何其他方式,但海报建议那里,暂停一个线程。他使用变量来知道何时运行或暂停。例如:
public class Game
{
static Thread controller, dice;
static boolean dicerunning = false;
public static void main(String[] args)
{
controller = new Thread(new Runnable()
{
public void run()
{
dicerunning = true;
dice.start();
while (dicerunning)
{
//blank
}
//tell piece to move here
}
});
dice = new Thread(new Runnable()
{
public void run()
{
//roll here
dicerunning = false;
}
});
controller.start();
}
}