package reversi.controller; import reversi.model.Player; import reversi.model.Reversi; import reversi.view.ReversiView; /** * Creates a new thread for the machine move. */ public class MachineMoveThread extends Thread { private Reversi model; private ReversiView view; private Player bot; MachineMoveThread(final Reversi model, final ReversiView view) { this.model = model; this.view = view; this.bot = model.next(); } @Override public final void run() { this.model.machineMove(); javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public final void run() { view.updatePlayField(model); view.setMovePossible(true); } }); if (model.next() == bot && !model.gameOver()) { this.run(); javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public final void run() { view.viewMessage("Human has to miss a turn"); } }); } } }