ITI0011:HW01 Mall
Mine navigeerimisribale
Mine otsikasti
Siin lehel on ITI0011 aine esimese kodutöö (Aardejaht) mall:
<source lang="java"> public class HW01 {
/**
* Value to return in makeMove in case
* the cell was empty.
*/
public static final int CELL_EMPTY = 0;
/**
* Value to return in makeMove in case
* the cell contained treasure.
*/
public static final int CELL_TREASURE = 10;
/**
* Value for a cell which is hidden
* (the contents of the cell is not visible).
* Used in bonus part 1.
*/
public static final int CELL_HIDDEN = 100;
/**
* Value to return in makeMove in case
* the cell does not exist.
*/
public static final int CELL_ERROR = -1;
/**
* Used to indicate that the score is wrong.
* Used by getHighscoreScoreAtIndex()
*/
public static final int HIGHSCORE_WRONG = Integer.MIN_VALUE;
/**
* Minsweeper-like clearing in case of empty cells.
*/
public static final int GAME_TYPE_MINESWEEPER = 1;
/**
* Cell contains the distance to the closest treasure.
*/
public static final int GAME_TYPE_HOT_COLD = 2;
/**
* Makes move to cell in certain row and column
* and returns the contents of the cell.
* Use CELL_* constants in return.
* @param row Row to make move to.
* @param col Column to make move to.
* @return Contents of the cell.
*/
public static int makeMove(int row, int col) {
if (row == -1) return CELL_ERROR;
return CELL_EMPTY;
}
/**
* Creates a map with certain measures and treasures.
* You should store the created map internally.
* This means you can choose your own implementation of how to store
* the map.
* The treasures should be put on the map randomly using setCell method.
* @param height Height of the map.
* @param width Width of the map.
* @param treasures The number of treasures on the map.
* @return Whether map was created.
*/
public static boolean createMap(int height, int width, int treasures) {
// initialize map (for example 2D-array)
// - set all cells empty (is this needed?)
// do some random for every treasure and add them to map:
setCell(2, 3, CELL_TREASURE);
if (height == -3) return false;
return false;
}
/**
* Sets the cell value for the active map (created earlier using
* createMap method).
* This method is required to test certain maps
* @param row Row index.
* @param col Column index.
* @param cellContents The value of the cell.
* @return Whether the cell value was set.
*/
public static boolean setCell(int row, int col, int cellContents) {
if (row == -123) return false;
return false;
}
/**
* Gets the used move count by the player.
* @return The number of moves done.
*/
public static int getMoveCount() {
return 1;
}
/**
* Returns cell contents at the given row and column.
* @param row Row index
* @param col Column index
* @return Cell contents according to CELL_* constants.
* In case the cell contains number of treasures, returns this number.
*/
public static int getCell(int row, int col) {
// open with treasure number => 4
// treasure => CELL_TREASURE
// open with treasure number == 0 => 0 or CELL_EMPTY
// hidden (not yet opened)
return CELL_HIDDEN;
}
/**
* Adds a player name and score to one of the highscore tables.
* @param id Highscore table to use. This can be
* configuration or name etc. In case the game has several
* highscore tables (one for minesweeper version, one for
* hot-cold version) they have to have different ids.
* @param name The name of the player.
* @param score The score of the player.
* @return The index where the player is put. In case
* the name is too short, the table with id does not exist
* or the score is too low, returns -1.
*/
public static int addHighscore(String id, String name, int score) {
return 1;
}
/**
* Gets the score from the concrete table at concrete index.
* @param id The highscore table to use.
* @param index The index of the score to be returned
* @return The score at the index. If the table does not exist
* or the index is not acceptable, returns -1.
*/
public static int getHighscoreScoreAtIndex(String id, int index) {
return HIGHSCORE_WRONG;
}
/**
* Gets the name of the player from the conrete table
* at concrete index.
* @param id The highscore table to use.
* @param index The index of the player to be returned.
* @return The name at the index. If the table does not exist
* or the index is not acceptable, return null.
*/
public static String getHighscoreNameAtIndex(String id, int index) {
return null;
}
/**
* Returns all the available highscore table ids.
* @return An array of table ids.
*/
public static String[] getHighscoreTables() {
return null;
}
/**
* Resets (clears) highscore table.
* @param id The id of the table to be reset.
*/
public static void resetHighscores(String id) {
//
}
/**
* Starts a game with the given mode.
* This allows the game to switch between "minesweeper" and "hot-cold"
* variants. Even if you only choose to implement the "hot-cold" variant
* this method is required to test it. Minesweeper variant is the default.
* @param type The type of game to start.
*/
public static void startGame(int type) {
}
/**
* Returns the distance to the closest treasure.
* The distance indicates the minimum steps it takes to get from
* the given (row, col) to the closest treasure.
* Step can be taken to every adjacent cell (horisontal, vertical and
* diagonal). From one cell you can step to 8 other cells.
*
* Example:
* ...C
* .B..
* A...
* ..DP
*
*
* distances:
* AP = 3
* BP = 2
* CP = 3
* DP = 1
*
* @param row Row index
* @param col Col index
* @return The distance to the closest treasure
*/
public static int getDistanceToClosestTreasure(int row, int col) {
return 0;
}
}
</source>