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 () |
ArrayList< Edge > | getWalls () |
void | setN (int N) |
void | setS (int S) |
void | setW (int W) |
void | setTiles (Tile[] tiles) |
void | setSupplies (Supply[] supplies) |
void | setWalls (ArrayList< Edge > walls) |
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 | isRoomCreator (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 25 of file Board.java.
|
package |
The empty constructor for default initialization.
Definition at line 32 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 46 of file Board.java.
|
package |
Deep copy constructor.
b | The board to copy |
Definition at line 70 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 414 of file Board.java.
|
package |
Creates the board with all the requested walls and supplies.
theseusTile | |
minotaurTile |
Definition at line 91 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 438 of file Board.java.
|
private |
This utility creates the inner walls of the board.
Definition at line 459 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 293 of file Board.java.
|
private |
This function creates randomly all the tiles of the board.
Definition at line 278 of file Board.java.
|
package |
A plain fair dice functionality provided by the board.
Definition at line 197 of file Board.java.
|
package |
Definition at line 212 of file Board.java.
|
package |
Definition at line 213 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 110 of file Board.java.
|
package |
Definition at line 226 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 487 of file Board.java.
|
package |
Definition at line 220 of file Board.java.
|
package |
Definition at line 214 of file Board.java.
|
package |
Definition at line 233 of file Board.java.
|
private |
Definition at line 267 of file Board.java.
|
private |
Definition at line 264 of file Board.java.
|
private |
Definition at line 265 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 315 of file Board.java.
|
private |
Definition at line 266 of file Board.java.
|
package |
Predicate to check if a direction is Walkable.
A walkable
direction is a tile direction where:
row | Row position of the starting tile. |
col | Column position of the starting tile. |
direction | The desired direction. |
Definition at line 171 of file Board.java.
|
package |
Predicate to check if a direction is Walkable.
A walkable
direction is a tile direction where:
tileId | The starting tileId. |
direction | The desired direction. |
Definition at line 152 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 394 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 360 of file Board.java.
|
package |
Print board utility.
sBoard | Reference to string representation of the board to print. |
Definition at line 131 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 533 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 513 of file Board.java.
|
package |
Definition at line 235 of file Board.java.
|
package |
Definition at line 236 of file Board.java.
|
package |
supplies | Reference to supplies that we want to act as replacement for the inner supplies array. |
Definition at line 250 of file Board.java.
|
package |
tiles | Reference to tiles that we want to act as replacement for the inner tiles array. |
Definition at line 244 of file Board.java.
|
package |
Definition at line 237 of file Board.java.
|
package |
walls | Reference to walls that we want to act as replacement for the inner walls vector. |
Definition at line 257 of file Board.java.
|
package |
Definition at line 203 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 185 of file Board.java.
|
private |
Definition at line 550 of file Board.java.
|
private |
Definition at line 547 of file Board.java.
|
private |
The size of each edge of the board.
Definition at line 555 of file Board.java.
|
private |
Definition at line 548 of file Board.java.
|
private |
The number of the supplies on the board.
Definition at line 556 of file Board.java.
|
private |
Array to hold all the supplies on the board.
Definition at line 559 of file Board.java.
|
private |
Array to hold all the tiles for the board.
Definition at line 558 of file Board.java.
|
private |
Definition at line 549 of file Board.java.
|
private |
The number of walls on the board.
Definition at line 557 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 560 of file Board.java.