51 lines
1.2 KiB
Java
51 lines
1.2 KiB
Java
package model.comPlayer.generator;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
import model.Board;
|
|
import model.Board.TileColor;
|
|
import model.CellPointer;
|
|
import model.Move;
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
public class ValidMoveGenerator implements MoveGenerator {
|
|
private static final Logger LOGGER = Logger
|
|
.getLogger(ValidMoveGenerator.class.getName());
|
|
|
|
@Override
|
|
public Move genMove(Board board, boolean asHuman) {
|
|
LOGGER.info("ValidMoveGenerator genMove() stub returning NONE");
|
|
return Move.NONE;
|
|
}
|
|
|
|
@Override
|
|
public List<Move> genMoves(Board board, boolean asHuman, int nMoves) {
|
|
|
|
List<Move> validMoves = new ArrayList<Move>();
|
|
|
|
for (int r = 0; r < Board.NUM_ROWS; r++) {
|
|
for (int c = 0; c < Board.NUM_COLS; c++) {
|
|
if (Board.isLegal(board, new CellPointer(r, c))) {
|
|
for (TileColor color : TileColor.values()) {
|
|
if (color == TileColor.NONE) {
|
|
continue;
|
|
}
|
|
validMoves.add(new Move(color, r, c));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Collections.shuffle(validMoves);
|
|
|
|
if (nMoves == MoveGenerator.ALL_MOVES) {
|
|
return validMoves;
|
|
} else {
|
|
return validMoves.subList(0, Math.min(validMoves.size(), nMoves));
|
|
}
|
|
}
|
|
}
|