BreakOut 5.1 - b), c)
This commit is contained in:
parent
5ea292bbae
commit
21a7b951d6
@ -52,9 +52,8 @@ public class Ball implements IBall {
|
|||||||
this.direction = new Vector2D(Constants.BALL_SPEED, Constants.BALL_SPEED);
|
this.direction = new Vector2D(Constants.BALL_SPEED, Constants.BALL_SPEED);
|
||||||
this.direction.rescale();
|
this.direction.rescale();
|
||||||
|
|
||||||
// start at bottom-center
|
// reset position to bottom-center
|
||||||
this.position.setX((Constants.SCREEN_WIDTH - Constants.BALL_DIAMETER) / 2.0);
|
resetPosition();
|
||||||
this.position.setY(Constants.SCREEN_HEIGHT - Constants.BALL_DIAMETER - Constants.PADDLE_HEIGHT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -388,4 +387,13 @@ public class Ball implements IBall {
|
|||||||
isLost = lost;
|
isLost = lost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* resets balls position
|
||||||
|
*/
|
||||||
|
public void resetPosition() {
|
||||||
|
// start at bottom-center
|
||||||
|
position.setX((Constants.SCREEN_WIDTH - Constants.BALL_DIAMETER) / 2.0);
|
||||||
|
position.setY(Constants.SCREEN_HEIGHT - Constants.BALL_DIAMETER - Constants.PADDLE_HEIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -73,13 +73,7 @@ public class Level extends Thread implements ILevel {
|
|||||||
this.score = score;
|
this.score = score;
|
||||||
this.ball = new Ball();
|
this.ball = new Ball();
|
||||||
|
|
||||||
// calc paddle positions
|
resetPaddles();
|
||||||
Position posPaddleTop = new Position((Constants.SCREEN_WIDTH - Constants.PADDLE_WIDTH) / 2.0, 0);
|
|
||||||
Position posPaddleBottom = new Position((Constants.SCREEN_WIDTH - Constants.PADDLE_WIDTH) / 2.0, Constants.SCREEN_HEIGHT - Constants.PADDLE_HEIGHT);
|
|
||||||
|
|
||||||
// set paddles
|
|
||||||
this.paddleTop = new Paddle(posPaddleTop);
|
|
||||||
this.paddleBottom = new Paddle(posPaddleBottom);
|
|
||||||
|
|
||||||
// set paddles color
|
// set paddles color
|
||||||
this.paddleTop.setColor(Constants.COLOR_PADDLE_TOP);
|
this.paddleTop.setColor(Constants.COLOR_PADDLE_TOP);
|
||||||
@ -137,6 +131,11 @@ public class Level extends Thread implements ILevel {
|
|||||||
// Call here the balls method for reacting on the borders of the playground
|
// Call here the balls method for reacting on the borders of the playground
|
||||||
getBall().reactOnBorder();
|
getBall().reactOnBorder();
|
||||||
|
|
||||||
|
// Call here the balls method for reacting on lost ball state
|
||||||
|
if(getBall().isLost()) {
|
||||||
|
decreaseLives();
|
||||||
|
}
|
||||||
|
|
||||||
// if ball hits paddle (top|bottom), reflect ball
|
// if ball hits paddle (top|bottom), reflect ball
|
||||||
if(getBall().hitsPaddle(paddleTop)) getBall().reflectOnPaddle(paddleTop);
|
if(getBall().hitsPaddle(paddleTop)) getBall().reflectOnPaddle(paddleTop);
|
||||||
if(getBall().hitsPaddle(paddleBottom)) getBall().reflectOnPaddle(paddleBottom);
|
if(getBall().hitsPaddle(paddleBottom)) getBall().reflectOnPaddle(paddleBottom);
|
||||||
@ -282,6 +281,57 @@ public class Level extends Thread implements ILevel {
|
|||||||
private boolean allStonesBroken() {
|
private boolean allStonesBroken() {
|
||||||
return stones.isEmpty();
|
return stones.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* decreases the lives and interact to the new count
|
||||||
|
*/
|
||||||
|
private void decreaseLives() {
|
||||||
|
lifeCounter--;
|
||||||
|
// reset paddles to center pos
|
||||||
|
if(lifeCounter > 0) {
|
||||||
|
resetPaddles();
|
||||||
|
getBall().resetPosition();
|
||||||
|
getBall().setLost(false);
|
||||||
|
stopBall();
|
||||||
|
// level failed
|
||||||
|
} else {
|
||||||
|
setFinished(true);
|
||||||
|
game.getController().toStartScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* resets paddles position and or init them
|
||||||
|
*/
|
||||||
|
private void resetPaddles() {
|
||||||
|
// calc paddle positions
|
||||||
|
Position posPaddleTop = new Position((Constants.SCREEN_WIDTH - Constants.PADDLE_WIDTH) / 2.0, 0);
|
||||||
|
Position posPaddleBottom = new Position((Constants.SCREEN_WIDTH - Constants.PADDLE_WIDTH) / 2.0, Constants.SCREEN_HEIGHT - Constants.PADDLE_HEIGHT);
|
||||||
|
|
||||||
|
// resets top paddle
|
||||||
|
if(paddleTop == null) paddleTop = new Paddle(posPaddleTop);
|
||||||
|
else paddleTop.setPosition(posPaddleTop);
|
||||||
|
|
||||||
|
// resets bottom paddle
|
||||||
|
if(paddleBottom == null) paddleBottom = new Paddle(posPaddleBottom);
|
||||||
|
else paddleBottom.setPosition(posPaddleBottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The getter for levels score
|
||||||
|
* @return the score
|
||||||
|
*/
|
||||||
|
public int getScore() {
|
||||||
|
return score;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The getter for levels lives
|
||||||
|
* @return the life counter
|
||||||
|
*/
|
||||||
|
public int getLives() {
|
||||||
|
return lifeCounter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user