/* public void randomizeBoard(Board board) { // TODO: Figure out a clever way to randomly initialize boards. for (int i = 0; i < board.getHeight(); i++) { for (int j = 0; j < board.getWidth(); j++) { if(Math.random()>0.5) { board.setAlive(i, j, true); } } } } */ public void randomizeBoard(Integer seed_num, Integer cell_num, Board board) { // TODO: Figure out a clever way to randomly initialize boards. if (seed_num > cell_num) { System.out.print("Seed# must be less than the Cell#!"); } else { for (int i = 0; i < board.getHeight(); i++) { // Initialization the board for (int j = 0; j < board.getWidth(); j++) { board.setAlive(i, j, false); } } ArrayList<Integer> rand_index = new ArrayList< Integer>(); // List of Saving the 1 to Height*Width number which used to be chosed as // random number ArrayList<Integer> seed_index = new ArrayList<Integer>(); // List of Saving the Seed index for (int i = 0; i <= board.getHeight() * board.getWidth() - 1; i++) { // input the num from 1 to Height*Width rand_index.add(i); } int cur_num = 0; while (cur_num < seed_num) { // random choose #cur_num of seed_index int value = (int) (Math.random() * rand_index.size()); seed_index.add(rand_index.get(value) + 1); ++cur_num; } for (int i = 0; i < seed_index.size(); i++) { // transfer the seed_index to coordinate int temp_v = ((List<Integer>) seed_index).get(i); if (temp_v % board.getWidth() != 0) { int x_axis = (int) (temp_v / board.getWidth()); int y_axis = temp_v % board.getWidth() - 1; board.setAlive(x_axis, y_axis, true); } else { int x_axis = (int) (temp_v / board.getWidth()) - 1; int y_axis = board.getWidth() - 1; board.setAlive(x_axis, y_axis, true); } } int cur_cellnum = seed_num; while (cur_cellnum < cell_num) // { // System.out.println(cur_cellnum); ArrayList<Coordinate> cur_liveCollection = (ArrayList<Coordinate>) board.getLiveCells(); int value = (int) (Math.random() * cur_liveCollection.size()); Coordinate selected_cell = cur_liveCollection.get(value); // System.out.println("wow "+board.countLiveNeighbors(selected_cell.getX(), // selected_cell.getY(), 1)); if (board.countLiveNeighbors(selected_cell.getX(), selected_cell.getY(), 1) != 8) { List<Coordinate> toCheck = new ArrayList<Coordinate>(); List<Coordinate> deadneigbours = new ArrayList<Coordinate>(); for (int i = (selected_cell.getX() - 1); i <= (selected_cell.getX() + 1); i++) { for (int j = (selected_cell.getY() - 1); j <= (selected_cell.getY() + 1); j++) { if (i <= board.getHeight() && i >= 0 && j <= board.getWidth() && j >= 0) { toCheck.add(new Coordinate(i, j)); } else { continue; } } } for (Coordinate c : toCheck) { if (board.getCellsMap().get(c) != null) { if (board.getCellsMap().get(c).isAlive() == false) { deadneigbours.add(c); } } } if (deadneigbours.size() != 0) { int neigbour_index = (int) (Math.random() * deadneigbours.size()); Coordinate selectedlive_cell = deadneigbours.get(neigbour_index); board.setAlive(selectedlive_cell.getX(), selectedlive_cell.getY(), true); ++cur_cellnum; } } } } }