fdai7222
2 years ago
6 changed files with 117 additions and 18 deletions
-
11spaceinvaders/GameProject/.project
-
1spaceinvaders/GameProject/src/base/MovingObjectsGame.java
-
21spaceinvaders/GameProject/src/controller/MineController.java
-
2spaceinvaders/GameProject/src/log4j2.xml
-
2spaceinvaders/GameProject/src/playground/BreakoutLevelBase.java
-
98spaceinvaders/GameProject/src/playground/BreakoutLevelBaseAdvanced.java
@ -0,0 +1,98 @@ |
|||
package playground; |
|||
|
|||
import org.apache.log4j.LogManager; |
|||
import org.apache.log4j.Logger; |
|||
|
|||
/** |
|||
* Advanced version of abstract {@link BreakoutLevelBase} providing a complete implementation of |
|||
* {@link #prepareLevel(String)}. Additionally abstract methods for number of bricks in X and Y |
|||
* direction are provided as well as abstract methods for brick sizes and start coordinates. |
|||
* |
|||
* @see #calcNrBricksX() |
|||
* @see #calcNrBricksY() |
|||
* @see #getBrickSizeX() |
|||
* @see #getBrickSizeY() |
|||
* @see #getBrickStartX() |
|||
* @see #getBrickStartY() |
|||
* |
|||
*/ |
|||
public abstract class BreakoutLevelBaseAdvanced extends BreakoutLevelBase { |
|||
|
|||
private static Logger logger = LogManager.getLogger(BreakoutLevelBaseAdvanced.class); |
|||
|
|||
|
|||
/** |
|||
* provides the number of bricks to be set in horizontal direction. |
|||
* |
|||
* @return positive value of how many bricks are to be next to each other in X direction |
|||
*/ |
|||
protected abstract int calcNrBricksX(); |
|||
|
|||
/** |
|||
* provides the number of bricks to be set in vertical direction. |
|||
* |
|||
* @return positive value of how many bricks are to be next to each other in Y direction |
|||
*/ |
|||
protected abstract int calcNrBricksY(); |
|||
|
|||
/** |
|||
* provides the length of one brick. |
|||
* |
|||
* @return positive value of how long a brick should be in X direction. |
|||
*/ |
|||
protected abstract double getBrickSizeX(); |
|||
|
|||
/** |
|||
* provides the height of one brick. |
|||
* |
|||
* @return positive value of how high a brick should be in Y direction. |
|||
*/ |
|||
protected abstract double getBrickSizeY(); |
|||
|
|||
/** |
|||
* provides the start coordinate of upper left corner (X value). |
|||
* |
|||
* @return positive value of the X coordinate to use as the starting point of the upper left |
|||
* corner of the brick set. |
|||
*/ |
|||
protected abstract double getBrickStartX(); |
|||
|
|||
/** |
|||
* provides the start coordinate of upper left corner (Y value). |
|||
* |
|||
* @return positive value of the Y coordinate to use as the starting point of the upper left |
|||
* corner of the brick set. |
|||
*/ |
|||
protected abstract double getBrickStartY(); |
|||
|
|||
|
|||
|
|||
/** |
|||
* Prepares a complete Breakout type level and uses the values provided by implementations of |
|||
* {@link #calcNrBricksX()} and {@link #calcNrBricksY()} to generate the stone matrix. |
|||
* Furthermore, it relies on the methods {@link #createEgoObject()}, {@link #createBall} and {@link #createBrick}, |
|||
* which are meant to be overwritten in subclasses. <br> |
|||
* Attention: For collision detection bricks created by {@link #createBrick(int, int)} need to have the String 'brick' in ID. |
|||
* |
|||
* @see LevelBreakoutBase#prepareLevel(String) for further information. |
|||
* |
|||
* @param level String passes by the game engine (not used currently and can be ignored). |
|||
* |
|||
*/ |
|||
@Override |
|||
public void prepareLevel(String level) { |
|||
|
|||
for (int y = 0; y < this.calcNrBricksY(); y++) { |
|||
for (int x = 0; x < this.calcNrBricksX(); x++) { |
|||
logger.trace("trying to create brick X, Y (" + x + "," + y + ")"); |
|||
this.addObject(this.createBrick(x, y)); |
|||
} |
|||
} |
|||
this.ego = this.createEgoObject(); |
|||
this.ball = this.createBall(); |
|||
this.addObject(this.ego); |
|||
this.addObject(this.ball); |
|||
logger.info("level preperation succeeded."); |
|||
} |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue