From 6afed1ded1c64cdeef46ea50fae53d4e284a93ca Mon Sep 17 00:00:00 2001 From: Nico B Date: Wed, 15 Jun 2022 17:14:28 +0200 Subject: [PATCH] finished HA08 --- GameProject/src/base/BreakoutGame.java | 3 +- .../src/playground/BreakoutLevel2.java | 147 ++++++++++++++++++ 2 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 GameProject/src/playground/BreakoutLevel2.java diff --git a/GameProject/src/base/BreakoutGame.java b/GameProject/src/base/BreakoutGame.java index d9cc8b5..872d3cc 100644 --- a/GameProject/src/base/BreakoutGame.java +++ b/GameProject/src/base/BreakoutGame.java @@ -19,7 +19,8 @@ public class BreakoutGame extends GameLoop { @Override public void defineLevels() { this.resetLevels(); // removes Level1 added by superclass constructor - this.addLevel(new BreakoutLevel1()); // FIXME add this as soon as your level exists + //this.addLevel(new BreakoutLevel1()); // FIXME add this as soon as your level exists + this.addLevel(new BreakoutLevel2()); } /** diff --git a/GameProject/src/playground/BreakoutLevel2.java b/GameProject/src/playground/BreakoutLevel2.java new file mode 100644 index 0000000..681026e --- /dev/null +++ b/GameProject/src/playground/BreakoutLevel2.java @@ -0,0 +1,147 @@ +package playground; + +import java.awt.Color; + +import collider.RectCollider; +import controller.EgoController; +import controller.LimitedTimeController; +import controller.ReboundController2; +import gameobjects.FallingStar; +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++) { + double color = Math.random(); + Color random = null; + if (color <= 0.24) { + random = Color.RED; + } + else if (color >= 0.25 && color <= 0.49) { + random = Color.BLUE; + } + else if (color >= 0.5 && color <= 0.74) { + random = Color.YELLOW; + } + else if (color >= 0.75) { + random = Color.GREEN; + } + + double vx = Math.random(); + if(vx <= 0.49) { + vx *= 240; + } else { + vx *= -240; + } + + double vy = Math.random(); + if(vy <= 0.49) { + vy *= 240; + } else { + vy *= -240; + } + FallingStar fragment = new FallingStar("fragment"+ i + getGameTime(), this, brick.getX(), brick.getY(), vx, vy, random, 5d); + LimitedTimeController time = new LimitedTimeController(getGameTime(), 2); + fragment.addController(time); + this.addObject(fragment); + } + + ball.setVY(ball.getVY() * -1); + this.deleteObject(brick.id); + + } + + @Override + protected void actionIfBallHitsEgo(GameObject ball, GameObject ego) { + if (ball.getVX() > 0 && ball.getX() <= ego.getX()- 25) { + ball.setVX(ball.getVX()*-1); + ball.setVY(ball.getVY() * -1); + } + else if (ball.getVX() < 0 && ball.getX() >= ego.getX() + 25) { + ball.setVX(ball.getVX() * -1); + ball.setVY(ball.getVY() * -1); + } + else { + ball.setVY(ball.getVY() * -1); + } + + } + + @Override + protected GameObject createEgoObject() { + RectObject ego = new RectObject("ego", this, 350d, 550d, 0d, 0d, 60d, 10d, Color.BLUE); + EgoController eController = new EgoController(60d, 10d); + ego.addController(eController); + RectCollider collider1 = new RectCollider("collider1", ego, 60d, 10d); + ego.addCollider(collider1); + return ego; + } + + @Override + protected GameObject createBall() { + FallingStar ball = new FallingStar("ball", this, 350d, 350d, 130d, 130d, Color.RED, 5d); + ReboundController2 bbound = new ReboundController2(); + ball.addController(bbound); + return ball; + } + + @Override + protected GameObject createBrick(int row, int column) { + double color = Math.random(); + Color random = null; + if (color <= 0.24) { + random = Color.RED; + } + else if (color >= 0.25 && color <= 0.49) { + random = Color.BLUE; + } + else if (color >= 0.5 && color <= 0.74) { + random = Color.YELLOW; + } + else if (color >= 0.75) { + random = Color.GREEN; + } + + + RectObject brick = new RectObject("brick" + row + column, this, 90d+ column * 120, 60d + row * 60d, 0d, 0d, 60d, 30d, random); + RectCollider greenCollider = new RectCollider("greenCollider", brick, 60d, 30d); + brick.addCollider(greenCollider); + return brick; + } + +}