diff --git a/GameProject.zip b/GameProject.zip new file mode 100644 index 0000000..7ea9faa Binary files /dev/null and b/GameProject.zip differ diff --git a/GameProject/src/base/BreakoutGame.java b/GameProject/src/base/BreakoutGame.java index d9cc8b5..7b4d725 100644 --- a/GameProject/src/base/BreakoutGame.java +++ b/GameProject/src/base/BreakoutGame.java @@ -19,6 +19,7 @@ public class BreakoutGame extends GameLoop { @Override public void defineLevels() { this.resetLevels(); // removes Level1 added by superclass constructor + this.addLevel(new BreakoutLevel2()); this.addLevel(new BreakoutLevel1()); // FIXME add this as soon as your level exists } diff --git a/GameProject/src/playground/BreakoutLevel2.java b/GameProject/src/playground/BreakoutLevel2.java new file mode 100644 index 0000000..a312ebe --- /dev/null +++ b/GameProject/src/playground/BreakoutLevel2.java @@ -0,0 +1,108 @@ +package playground; + +import java.awt.Color; + +import collider.RectCollider; +import gameobjects.GameObject; +import gameobjects.RectObject; + +public class BreakoutLevel2 extends BreakoutLevelBaseAdvanced { + + @Override + protected int calcNrBricksX() { + return 6; + } + + @Override + protected int calcNrBricksY() { + return 5; + } + + @Override + protected double getBrickSizeX() { + return 60; + } + + @Override + protected double getBrickSizeY() { + return 30; + } + + @Override + protected double getBrickStartX() { + return 90; + } + + @Override + protected double getBrickStartY() { + return 60; + } + + @Override + protected void actionIfBallHitsBrick(GameObject ball, GameObject brick) { + for(int i = 0; i < 20; i++) { + //Zufällige Farbe + gameobjects.FallingStar effect = new gameobjects.FallingStar("effect" + i, this, brick.getX(), brick.getY(), -240, 240, Color.RED, 3); + this.addObject(effect); + } + + this.ball.setVY(this.ball.getVY()*-1); + this.deleteObject(brick.getId()); + //logger.trace("Collision detected of ball and brick " + brick.getId()); + } + + @Override + protected void actionIfBallHitsEgo(GameObject ball, GameObject ego) { + if (ball.getX()>= (ego.getX() + 0.45d * 60)) { + this.ball.setVX(this.ball.getVX()*-1); + } else if (ball.getX()<= (ego.getX() - 0.45d * 60)) { + this.ball.setVX(this.ball.getVX()*-1); + } + this.ball.setVY(this.ball.getVY()*-1); + + //logger.trace("Collision detected of ball and ego "); + } + + @Override + protected GameObject createEgoObject() { + RectObject egoObject_BL1 = new RectObject("egoObject_BL1", this, 350, 550, 0, 0, 60, 10, Color.BLUE); + egoObject_BL1.addController(new controller.EgoController(60, 10)); + egoObject_BL1.addCollider(new RectCollider("egoObject_BL1_Col", egoObject_BL1, 60, 10)); + //logger.debug("Ego created "); + return egoObject_BL1; + } + + @Override + protected GameObject createBall() { + gameobjects.FallingStar BallObject_BL1 = new gameobjects.FallingStar ("BallObject_BL1", this, 350, 350, 130, 130, Color.RED, 5); + BallObject_BL1.addController(new controller.ReboundController()); + //logger.debug("Ball created "); + return BallObject_BL1; + } + + @Override + protected GameObject createBrick(int row, int column) { + double a = Math.random(); + + if(a <= 0.25) { + RectObject brick0 = new RectObject("brick" + row + column, this, column * (2 * this.getBrickSizeX()) + this.getBrickStartX(), row * (2 * this.getBrickSizeY()) + this.getBrickStartY(), 0, 0, 60, 30, Color.GREEN); + brick0.addCollider(new RectCollider("brick" + row + column + "Col", brick0, 60, 30)); + return brick0; + } + if(a > 0.25 && a <= 0.5) { + RectObject brick1 = new RectObject("brick" + row + column, this, column * (2 * this.getBrickSizeX()) + this.getBrickStartX(), row * (2 * this.getBrickSizeY()) + this.getBrickStartY(), 0, 0, 60, 30, Color.BLUE); + brick1.addCollider(new RectCollider("brick" + row + column + "Col", brick1, 60, 30)); + return brick1; + } + if(a > 0.5 && a <= 0.75) { + RectObject brick2 = new RectObject("brick" + row + column, this, column * (2 * this.getBrickSizeX()) + this.getBrickStartX(), row * (2 * this.getBrickSizeY()) + this.getBrickStartY(), 0, 0, 60, 30, Color.PINK); + brick2.addCollider(new RectCollider("brick" + row + column + "Col", brick2, 60, 30)); + return brick2; + } + RectObject brick3 = new RectObject("brick" + row + column, this, column * (2 * this.getBrickSizeX()) + this.getBrickStartX(), row * (2 * this.getBrickSizeY()) + this.getBrickStartY(), 0, 0, 60, 30, Color.YELLOW); + brick3.addCollider(new RectCollider("brick" + row + column + "Col", brick3, 60, 30)); + return brick3; + //logger.debug("Brick created: " + brick.getId()); + } + +}