diff --git a/src/break_out/controller/Controller.java b/src/break_out/controller/Controller.java index dcbea7b..7f55d69 100644 --- a/src/break_out/controller/Controller.java +++ b/src/break_out/controller/Controller.java @@ -132,6 +132,12 @@ public class Controller implements ActionListener, KeyListener { game.getLevel().getPaddleBottom().setDirection(+1); game.getLevel().getPaddleTop().setDirection(+1); break; + // escape was pressed + case KeyEvent.VK_ESCAPE: + // exit current level + game.getLevel().setFinished(true); + toStartScreen(); + break; } } diff --git a/src/break_out/model/Level.java b/src/break_out/model/Level.java index 9dce4ba..be436e3 100644 --- a/src/break_out/model/Level.java +++ b/src/break_out/model/Level.java @@ -36,6 +36,11 @@ public class Level extends Thread implements ILevel { */ private boolean ballWasStarted = false; + /** + * Flag that shows if the level was finished + */ + private boolean levelFinished = false; + /** * The paddles of the level */ @@ -109,7 +114,7 @@ public class Level extends Thread implements ILevel { game.notifyObservers(); // endless loop - while (true) { + while (!levelFinished) { // if ballWasStarted is true, the ball is moving if (ballWasStarted()) { @@ -184,7 +189,7 @@ public class Level extends Thread implements ILevel { * @param finished game state */ public void setFinished(boolean finished) { - + this.levelFinished = finished; } }