Labyrinth
A labyrinth game assignment
|
This class is the representation of the games's board. More...
Package Functions | |
Constructors | |
Board () | |
The empty constructor for default initialization. More... | |
Board (int N, int S) | |
The main constructor for the application. More... | |
Board (Board b) | |
Deep copy constructor. More... | |
Board's main application interface | |
void | createBoard (int theseusTile, int minotaurTile) |
Creates the board with all the requested walls and supplies. More... | |
String [][] | getStringRepresentation (int theseusTile, int minotaurTile) |
Returns a 2-D array with the string representation of the board. More... | |
void | printBoard (String[][] sBoard) |
Print board utility. More... | |
boolean | isWalkable (int tileId, int direction) |
Predicate to check if a direction is Walkable. More... | |
boolean | isWalkable (int row, int col, int direction) |
Predicate to check if a direction is Walkable. More... | |
int | tryPickSupply (int tileId) |
Try to pick supply from a tile. More... | |
int | dice () |
A plain fair dice functionality provided by the board. More... | |
int | size () |
Accessor/Mutator interface | |
| |
int | getN () |
int | getS () |
int | getW () |
Tile [] | getTiles () |
Supply [] | getSupplies () |
void | setN (int N) |
void | setS (int S) |
void | setW (int W) |
void | setTiles (Tile[] tiles) |
void | setSupplies (Supply[] supplies) |
Private Member Functions | |
Sentinel predicates | |
boolean | isLeftSentinel (int tileId) |
boolean | isRightSentinel (int tileId) |
boolean | isUpSentinel (int tileId) |
boolean | isDownSentinel (int tileId) |
private functionality of the object | |
void | createTiles () |
This function creates randomly all the tiles of the board. More... | |
void | createSupplies (int theseusTile, int minotaurTile) |
This function create randomly the board's supplies. More... | |
boolean | makesClosedRoom (int tileId, int direction) |
Predicate to check if a wall creates a closed room. More... | |
boolean | isWallableDir (int tileId, int direction) |
Predicate to check if a tile direction is Wallable . More... | |
boolean | isWallable (int tileId) |
Predicate to check if a tile is Wallable . More... | |
int | createBasicTileWalls () |
This utility function create/allocate the tiles of the board and create the outer walls at the same time. More... | |
void | createInnerWall (int tileId) |
Create randomly a wall in the wallable selected tile. More... | |
int | createInnerWalls () |
This utility creates the inner walls of the board. More... | |
String | getTileBody (int row, int col, int theseusTile, int minotaurTile) |
Utility to get the body (center line) of the string representation of the tile. More... | |
void | renderTile (String[][] frame, int row, int col, int theseusTile, int minotaurTile) |
Utility to render the 3 strings of the tile in the representation frame. More... | |
void | renderSentinelTile (String[][] frame, int row, int col, int theseusTile, int minotaurTile) |
Utility to render the 3 strings of the tile in the representation frame in the case the tile lies in the east wall. More... | |
Private Attributes | |
Neighbor access lambdas | |
IntFunction< Integer > | leftTileId = (id) -> { return Position.toID(Position.toRow(id), Position.toCol(id)-1); } |
IntFunction< Integer > | rightTileId = (id) -> { return Position.toID(Position.toRow(id), Position.toCol(id)+1); } |
IntFunction< Integer > | upTileId = (id) -> { return Position.toID(Position.toRow(id)+1, Position.toCol(id) ); } |
IntFunction< Integer > | downTileId = (id) -> { return Position.toID(Position.toRow(id)-1, Position.toCol(id) ); } |
Class data | |
int | N |
The size of each edge of the board. More... | |
int | S |
The number of the supplies on the board. More... | |
int | W |
The number of walls on the board. More... | |
Tile [] | tiles |
Array to hold all the tiles for the board. More... | |
Supply [] | supplies |
Array to hold all the supplies on the board. More... | |
ArrayList< Edge > | walls |
Array to hold all the walls using the edge representation required by the closed room preventing algorithm. More... | |
This class is the representation of the games's board.
The board is the square arrangement of the tiles. This class is also the owner of the tile and supply objects.
Definition at line 22 of file Board.java.
|
package |
The empty constructor for default initialization.
Definition at line 29 of file Board.java.
|
package |
The main constructor for the application.
N | The size of each edge of the board |
S | The number of supplies on the board |
Definition at line 43 of file Board.java.
|
package |
Deep copy constructor.
b | The board to copy |
Definition at line 66 of file Board.java.
|
private |
This utility function create/allocate the tiles of the board and create the outer walls at the same time.
Definition at line 386 of file Board.java.
|
package |
Creates the board with all the requested walls and supplies.
theseusTile | |
minotaurTile |
Definition at line 87 of file Board.java.
|
private |
Create randomly a wall in the wallable selected tile.
tileId | The wallable tile to create the wall |
Definition at line 410 of file Board.java.
|
private |
This utility creates the inner walls of the board.
Definition at line 431 of file Board.java.
|
private |
This function create randomly the board's supplies.
The supplies has to be in separate tiles and in tiles with no player
theseusTile | The tile of the Theseus |
minotaurTile | The tile of the Minotaur |
Definition at line 262 of file Board.java.
|
private |
This function creates randomly all the tiles of the board.
Definition at line 247 of file Board.java.
|
package |
A plain fair dice functionality provided by the board.
Definition at line 181 of file Board.java.
|
package |
Definition at line 196 of file Board.java.
|
package |
Definition at line 197 of file Board.java.
|
package |
Returns a 2-D array with the string representation of the board.
The rows of the array represent the Y-coordinate and the columns the X-coordinate. The only difference is that between each row there is an extra row with the possible walls. This way the number of rows of the returning array are 2N+1 and the number of columns N+1.
So each tile of the board is represented by 3 strings. One for the north wall, one for the body and one for the south wall.
theseusTile | The current Theseus tile |
minotaurTile | The current Minotaur tile |
Definition at line 106 of file Board.java.
|
package |
Definition at line 210 of file Board.java.
|
private |
Utility to get the body (center line) of the string representation of the tile.
row | What board's row to get. |
col | What board's column to get. |
theseusTile | The current tile of the Theseus. |
minotaurTile | The current tile of the Minotaur. |
Definition at line 459 of file Board.java.
|
package |
Definition at line 204 of file Board.java.
|
package |
Definition at line 198 of file Board.java.
|
private |
Definition at line 236 of file Board.java.
|
private |
Definition at line 233 of file Board.java.
|
private |
Definition at line 234 of file Board.java.
|
private |
Definition at line 235 of file Board.java.
|
package |
Predicate to check if a direction is Walkable.
tileId | The starting tileId. |
direction | The desired direction. |
Definition at line 142 of file Board.java.
|
package |
Predicate to check if a direction is Walkable.
row | Row position of the starting tile. |
col | Column position of the starting tile. |
direction | The desired direction. |
Definition at line 155 of file Board.java.
|
private |
Predicate to check if a tile is Wallable
.
A wallable
tile is a tile where:
Const.maxTileWalls -1
walls. tileId | The tile to check |
Definition at line 366 of file Board.java.
|
private |
Predicate to check if a tile direction is Wallable
.
A wallable
direction is a tile direction where:
Const.maxTileWalls -1
walls. tileId | The tile to check. |
direction | The direction to check |
Definition at line 330 of file Board.java.
|
private |
Predicate to check if a wall creates a closed room.
This algorithm has a complexity of where N represents the total number of tiles. It should be used with care.
tileId | The tileId of the wall. |
direction | The wall's relative direction. |
Definition at line 284 of file Board.java.
|
package |
Print board utility.
sBoard | Reference to string representation of the board to print. |
Definition at line 127 of file Board.java.
|
private |
Utility to render the 3 strings of the tile in the representation frame in the case the tile lies in the east wall.
We call these tiles sentinel tiles
frame | Reference to the frame to print into. |
row | The board's row to print. |
col | The board's column to print. |
theseusTile | The current tile of the Theseus. |
minotaurTile | The current tile of the Minotaur. |
Definition at line 505 of file Board.java.
|
private |
Utility to render the 3 strings of the tile in the representation frame.
frame | Reference to the frame to print into. |
row | The board's row to print. |
col | The board's column to print. |
theseusTile | The current tile of the Theseus. |
minotaurTile | The current tile of the Minotaur. |
Definition at line 485 of file Board.java.
|
package |
Definition at line 212 of file Board.java.
|
package |
Definition at line 213 of file Board.java.
|
package |
supplies | Reference to supplies that we want to act as replacement for the inner supplies array. |
Definition at line 227 of file Board.java.
|
package |
tiles | Reference to tiles that we want to act as replacement for the inner tiles array. |
Definition at line 221 of file Board.java.
|
package |
Definition at line 214 of file Board.java.
|
package |
Definition at line 187 of file Board.java.
|
package |
Try to pick supply from a tile.
If succeed it also erases the supply from the board.
tileId | The tile to check |
Definition at line 169 of file Board.java.
|
private |
Definition at line 522 of file Board.java.
|
private |
Definition at line 519 of file Board.java.
|
private |
The size of each edge of the board.
Definition at line 527 of file Board.java.
|
private |
Definition at line 520 of file Board.java.
|
private |
The number of the supplies on the board.
Definition at line 528 of file Board.java.
|
private |
Array to hold all the supplies on the board.
Definition at line 531 of file Board.java.
|
private |
Array to hold all the tiles for the board.
Definition at line 530 of file Board.java.
|
private |
Definition at line 521 of file Board.java.
|
private |
The number of walls on the board.
Definition at line 529 of file Board.java.
|
private |
Array to hold all the walls using the edge representation required by the closed room preventing algorithm.
Definition at line 532 of file Board.java.