Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Heavy extends AbstractFallHandler
- {
- public Heavy(final String name) {
- super(name);
- }
- public boolean supportExists(Board board, int x, int y) {
- while (y < board.getHeight() + Board.getOutsideMargin()) {
- if (board.getSquareFromBoard(x, y) == SquareType.EMPTY) {
- return false;
- }
- y++;
- }
- return true;
- }
- public void pushDown(Board board, int x, int y) {
- int start = y;
- while (start < board.getHeight() + Board.getOutsideMargin()) {
- if (board.getSquareFromBoard(x, start) == SquareType.EMPTY) {
- break;
- }
- start++;
- }
- for (int i = start; i > y - 1; i--) {
- board.setSquareAt(x, i, board.getSquareFromBoard(x, i - 1));
- }
- }
- public boolean hasCollision(Board board) {
- //Checking if capable of pushing down blocks
- for (int y = 0; y < board.getFalling().getHeight(); y++) {
- for (int x = 0; x < board.getFalling().getWidth(); x++) {
- SquareType fallingSquare = board.getFalling().getSquareAt(x, y);
- if (fallingSquare != SquareType.EMPTY) {
- if (board.getSquareFromBoard(board.getFallingX() + x, board.getFallingY() + y) == SquareType.OUTSIDE ||
- supportExists(board, board.getFallingX() + x, board.getFallingY() + y)) {
- return true;
- }
- }
- }
- }
- //Pushing down block(s)
- for (int y = 0; y < board.getFalling().getHeight(); y++) {
- for (int x = 0; x < board.getFalling().getWidth(); x++) {
- if (board.getSquareFromBoard(board.getFallingX() + x, board.getFallingY() + y) != SquareType.EMPTY &&
- board.getFalling().getSquareAt(x, y) != SquareType.EMPTY) {
- pushDown(board, board.getFallingX() + x, board.getFallingY() + y);
- }
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement