You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.6 KiB
140 lines
3.6 KiB
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() * (240 - -240)) + -240);
|
|
double vy = ((Math.random() * (240 - -240)) + -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) {
|
|
|
|
RectObject ego1 = (RectObject) ego;
|
|
|
|
if (ball.getVX() > 0 && ball.getX() <= ego.getX() - ego1.getWidth() * 0.45) {
|
|
ball.setVX(ball.getVX() *-1);
|
|
ball.setVY(ball.getVY() * -1);
|
|
}
|
|
else if (ball.getVX() < 0 && ball.getX() >= ego.getX() + ego1.getWidth() * 0.45) {
|
|
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;
|
|
}
|
|
|
|
}
|