package model.comPlayer; import java.util.Random; import model.Board; import model.Board.TileColor; import model.CellPointer; import model.Move; import model.playerModel.PlayerModel; public class MonteCarloComPlayer implements Player { private final Random rand = new Random(); @Override public void denyMove() { throw new UnsupportedOperationException("Not implemented"); } @Override public Move getMove(Board board, PlayerModel player) { return getRandomMove(board, true); } public Move getRandomMove(Board board, boolean isCompTurn) { TileColor tile = TileColor.BLUE; int r = -1; int c = -1; while (tile != TileColor.NONE) { r = rand.nextInt(Board.NUM_ROWS); c = rand.nextInt(Board.NUM_COLS); tile = board.getTile(r, c); } switch (rand.nextInt(4)) { case 0: tile = TileColor.BLUE; break; case 1: tile = TileColor.GREEN; break; case 2: tile = TileColor.RED; break; case 3: tile = TileColor.YELLOW; } return new Move(tile, new CellPointer(r, c)); } @Override public boolean isReady() { return true; // always ready to play a random valid move } @Override public String toString() { return "Monte Carlo ComPlayer"; } }