104 lines
2.4 KiB
Java
104 lines
2.4 KiB
Java
package uk.ac.soton.comp1206.game;
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
import uk.ac.soton.comp1206.component.GameBlock;
|
|
|
|
/**
|
|
* The Game class handles the main logic, state and properties of the TetrECS game. Methods to manipulate the game state
|
|
* and to handle actions made by the player should take place inside this class.
|
|
*/
|
|
public class Game {
|
|
|
|
private static final Logger logger = LogManager.getLogger(Game.class);
|
|
|
|
/**
|
|
* Number of rows
|
|
*/
|
|
protected final int rows;
|
|
|
|
/**
|
|
* Number of columns
|
|
*/
|
|
protected final int cols;
|
|
|
|
/**
|
|
* The grid model linked to the game
|
|
*/
|
|
protected final Grid grid;
|
|
|
|
/**
|
|
* Create a new game with the specified rows and columns. Creates a corresponding grid model.
|
|
* @param cols number of columns
|
|
* @param rows number of rows
|
|
*/
|
|
public Game(int cols, int rows) {
|
|
this.cols = cols;
|
|
this.rows = rows;
|
|
|
|
//Create a new grid model to represent the game state
|
|
this.grid = new Grid(cols,rows);
|
|
}
|
|
|
|
/**
|
|
* Start the game
|
|
*/
|
|
public void start() {
|
|
logger.info("Starting game");
|
|
initialiseGame();
|
|
}
|
|
|
|
/**
|
|
* Initialise a new game and set up anything that needs to be done at the start
|
|
*/
|
|
public void initialiseGame() {
|
|
logger.info("Initialising game");
|
|
}
|
|
|
|
/**
|
|
* Handle what should happen when a particular block is clicked
|
|
* @param gameBlock the block that was clicked
|
|
*/
|
|
public void blockClicked(GameBlock gameBlock) {
|
|
//Get the position of this block
|
|
int x = gameBlock.getX();
|
|
int y = gameBlock.getY();
|
|
|
|
//Get the new value for this block
|
|
int previousValue = grid.get(x,y);
|
|
int newValue = previousValue + 1;
|
|
if (newValue > GamePiece.PIECES) {
|
|
newValue = 0;
|
|
}
|
|
|
|
//Update the grid with the new value
|
|
grid.set(x,y,newValue);
|
|
}
|
|
|
|
/**
|
|
* Get the grid model inside this game representing the game state of the board
|
|
* @return game grid model
|
|
*/
|
|
public Grid getGrid() {
|
|
return grid;
|
|
}
|
|
|
|
/**
|
|
* Get the number of columns in this game
|
|
* @return number of columns
|
|
*/
|
|
public int getCols() {
|
|
return cols;
|
|
}
|
|
|
|
/**
|
|
* Get the number of rows in this game
|
|
* @return number of rows
|
|
*/
|
|
public int getRows() {
|
|
return rows;
|
|
}
|
|
|
|
|
|
}
|