Untitled
unknown
plain_text
4 years ago
3.5 kB
5
Indexable
public class SimpleSameGame { // the board variable needs to be public so that // it can be accessed by the JUnit test. Please // do not modify its visibility. public ArrayList<Tile> board; /** * Constructor: create a board of with 'size' tiles * containing Tiles of different colours using the * random number generator. * * Please DO NOT MODIFY this method * * You can use this constructor as the basis * for the SameGame constructor. * * @param rgen - the random number generator (non null) * @param size - the number of tiles on the board */ public SimpleSameGame(Random rgen, int size) { // create an ArrayList of four different Color objects // which will be used to populate the board ArrayList<Color> colors = new ArrayList<Color>(); colors.add(Color.decode(ColorDef.BLUE)); colors.add(Color.decode(ColorDef.PURPLE)); colors.add(Color.decode(ColorDef.YELLOW)); colors.add(Color.decode(ColorDef.GREEN)); // initialise the ArrayList representing the board board = new ArrayList<Tile>(); for(int i = 0; i < size; i++) { // get a random number from 0 to colors.size()-1 int current = rgen.nextInt(colors.size()); // create a tile with a random colour from the colors array // (based on the random number we just generated) board.add(new Tile(colors.get(current),1)); } } /** * 4 marks (Pass level) * * Return an instance copy of the board. Do not * return a reference copy since the calling method * may modify the returned ArrayList. * * @return an instance copy of the board */ public ArrayList<Tile> getBoard() { // to be completed return board; } /** * 5 marks (Pass level) * * Check if index i is a valid index, that is, if there * is a tile on that location. Return false if the index * is invalid or if a null value is encountered in that * index * * @param i - the index to check * @return true if index i is a valid location that contains a Tile, * false otherwise */ public boolean isValidIndex(int i) { // to be completed return false; } /** * 5 marks (Pass level) * * Checks if it is legal to remove a tile on index i from * the board. Recall that a tile can be removed only if * there is an adjacent tile with the same colour (please * see the assignment specification for more information). * Return false if the location given is invalid. * * @param i - the index to be checked * @return true if it is legal to remove the tile at index i, * false otherwise */ public boolean isValidMove(int i) { // to be completed return false; } /** * 5 marks (Pass level) * * Checks if the player has run out of moves, that is, if it * is not possible to remove any more tiles from the board. * Return true if there are no more tiles on the board. * * @return true if there are no more valid moves, false otherwise */ public boolean noMoreValidMoves() { // to be completed return false; } /** 10 marks (Pass level) * * Remove the tile at index i and all adjacent tiles * of the same colour (as discussed in the assignment * specification). * * Do nothing if the index i is invalid or if it is * illegal to remove the tile. * @param i */ public void removeTile(int i) { // to be completed } }
Editor is loading...