package playground; import java.awt.Color; import gameobjects.GameObject; public class BreakoutLevel3 extends BreakoutLevel2 { gameobjects.TextObject textPoints, textLives; /** Creates flags and TextObjects to display scores and Lives. * * @param level String */ @Override public void prepareLevel(String level) { setGlobalFlag("points", 0); getOrCreateGlobalFlag("lives", 3); textPoints = new gameobjects.TextObject("textPoints", this, 50 , 10, 0, 0, "Score: 0", 10, Color.black); textLives = new gameobjects.TextObject("textLives", this, 600 , 10, 0, 0, "Lives: "+(int)getOrCreateGlobalFlag("lives", 3), 10, Color.black); this.addObject(textPoints); this.addObject(textLives); super.prepareLevel(level); } /** Sets the Score if a Brick is hitted. * * @param ball GameObject * @param brick */ @Override protected void actionIfBallHitsBrick(GameObject ball, GameObject brick) { super.actionIfBallHitsBrick(ball, brick); setGlobalFlag("points", (int)(getGlobalFlag("points")) + 10); textPoints.setText("Score: "+(int)getGlobalFlag("points")); } /** If the Ball goes under the Ego, Lives are decreased and Ball is set above Ego. */ @Override public void applyGameLogic() { super.applyGameLogic(); if(ball.getY() > ego.getY()) { setGlobalFlag("lives", (int)(getGlobalFlag("lives")) - 1); textLives.setText("Lives: "+(int)getGlobalFlag("lives")); if(ball.getVY() > 0) { ball.setVY(ball.getVY() *- 1); } ball.setY(ego.getY()-20.0); } } /** game ends if egoLives < 0 . * * @return gameOver boolean */ @Override public boolean gameOver() { if((int)getGlobalFlag("lives") < 0) { return true; } return false; } }