From 572fc7b43978d27aa58727b631d7ff9d2e59b478 Mon Sep 17 00:00:00 2001 From: agreiner Date: Mon, 28 Jun 2021 21:45:53 +0200 Subject: [PATCH] Overhaul --- .../game/managers/GameLoopManager.java | 4 +- .../game/managers/GameObjectManager.java | 81 ++++++++- .../game/managers/GamePlayManager.java | 171 ++++++------------ .../game/managers/InputManager.java | 8 - .../game/managers/LevelManager.java | 20 +- .../superpangworld/graphics/base/Bubble.java | 40 ++-- .../graphics/base/CollidableGameObject.java | 6 + .../graphics/base/CollidingGameObject.java | 17 +- .../graphics/base/GameObject.java | 11 ++ .../graphics/base/Position.java | 67 ++----- .../graphics/helper/EndScreen.java | 31 ++++ .../graphics/helper/HelperValues.java | 2 - .../superpangworld/graphics/helper/Level.java | 3 +- .../graphics/helper/StartScreen.java | 40 ++++ .../graphics/immovable/Background.java | 2 +- .../graphics/immovable/GameFrame.java | 2 +- .../graphics/immovable/LevelLabel.java | 2 +- .../graphics/immovable/LevelProgressBar.java | 2 +- .../graphics/immovable/LivesLabel.java | 2 +- .../{GameOverlay.java => Overlay.java} | 5 +- .../graphics/immovable/ScoreLabel.java | 2 +- .../graphics/moveable/Harpoon.java | 29 +-- .../graphics/moveable/HexagonalBubble.java | 25 ++- .../graphics/moveable/PlayerObject.java | 3 +- .../graphics/moveable/RoundBubble.java | 25 ++- .../graphics/moveable/SpecialBubble.java | 6 +- .../Programmieren_2_jar/Programmieren 2.jar | Bin 7926635 -> 7928196 bytes .../game/managers/GameLoopManager.class | Bin 1998 -> 1998 bytes .../game/managers/GameObjectManager.class | Bin 5465 -> 8540 bytes .../game/managers/GamePlayManager.class | Bin 11689 -> 10700 bytes .../game/managers/InputManager.class | Bin 2324 -> 2249 bytes ...nager$NoMoreLevelsAvailableException.class | Bin 565 -> 565 bytes .../game/managers/LevelManager.class | Bin 2608 -> 2632 bytes .../superpangworld/graphics/base/Bubble.class | Bin 5701 -> 5695 bytes .../graphics/base/CollidableGameObject.class | Bin 2101 -> 2101 bytes .../graphics/base/CollidingGameObject.class | Bin 2404 -> 2275 bytes .../graphics/base/GameObject.class | Bin 3731 -> 3846 bytes .../graphics/base/Position.class | Bin 3479 -> 3092 bytes .../graphics/helper/EndScreen.class | Bin 0 -> 726 bytes .../graphics/helper/HelperValues.class | Bin 723 -> 470 bytes .../graphics/helper/Level.class | Bin 608 -> 608 bytes .../graphics/helper/StartScreen.class | Bin 0 -> 919 bytes .../graphics/immovable/Background.class | Bin 1501 -> 1504 bytes .../graphics/immovable/GameFrame.class | Bin 1113 -> 1116 bytes .../graphics/immovable/LevelLabel.class | Bin 1818 -> 1821 bytes .../graphics/immovable/LevelProgressBar.class | Bin 2661 -> 2664 bytes .../graphics/immovable/LivesLabel.class | Bin 1445 -> 1448 bytes .../{GameOverlay.class => Overlay.class} | Bin 1773 -> 1761 bytes .../graphics/immovable/ScoreLabel.class | Bin 1523 -> 1446 bytes .../graphics/moveable/Harpoon.class | Bin 4244 -> 4542 bytes .../graphics/moveable/HexagonalBubble.class | Bin 4219 -> 4212 bytes .../graphics/moveable/PlayerObject.class | Bin 4541 -> 4544 bytes .../graphics/moveable/RoundBubble.class | Bin 5588 -> 5948 bytes .../graphics/moveable/SpecialBubble.class | Bin 3346 -> 3326 bytes 54 files changed, 340 insertions(+), 266 deletions(-) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/EndScreen.java create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/StartScreen.java rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/{GameOverlay.java => Overlay.java} (93%) create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/EndScreen.class create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/StartScreen.class rename out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/{GameOverlay.class => Overlay.class} (55%) diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java index 9364328..d4da246 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java @@ -2,7 +2,9 @@ package de.thdeg.greiner.superpangworld.game.managers; import de.thdeg.greiner.superpangworld.gameview.GameView; -/** This class manages the main game loop of the game. */ +/** + * This class manages the main game loop of the game. + */ public class GameLoopManager { private final GameView gameView; private final InputManager inputManager; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java index 44509c6..9fbdf9e 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java @@ -2,12 +2,16 @@ package de.thdeg.greiner.superpangworld.game.managers; import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.Bubble; +import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; import de.thdeg.greiner.superpangworld.graphics.base.GameObject; import de.thdeg.greiner.superpangworld.graphics.immovable.*; import de.thdeg.greiner.superpangworld.graphics.moveable.*; -import java.awt.*; +import java.awt.Color; +import java.util.ArrayList; import java.util.LinkedList; +import java.util.List; +import java.util.Random; /** * The manager handling the display and passive movement of the game objects. @@ -23,17 +27,22 @@ class GameObjectManager { private final LivesLabel livesLabel; private final Background background; private final GameFrame frame; - private final GameOverlay gameOverlay; + private final Overlay overlay; private final PlayerObject playerObject; private final LinkedList gameObjects; + private final Random random; + /** - * Create a manager handling the display and passive movement of the game objects. + * Create a manager handling the game objects. + * * @param gameView the GameView */ public GameObjectManager(GameView gameView){ + + random = new Random(); gameView.setColorForBlockImage('k', Color.LIGHT_GRAY); bubbles = new LinkedList<>(); @@ -47,18 +56,72 @@ class GameObjectManager { background = new Background(gameView); frame = new GameFrame(gameView); playerObject = new PlayerObject(gameView); - gameOverlay = new GameOverlay(gameView); + overlay = new Overlay(gameView); } /** - * Clear all game object lists. + * Clear all game object lists and stops any sounds. */ public void clearAll(){ gameObjects.clear(); bubbles.clear(); + harpoons.forEach(Harpoon::stopSound); harpoons.clear(); } + /** + * Get all collideable game objects a bubble can collide with. + * + * @return the game objects + */ + public List getBubblesCollideables(){ + List collidableGameObjects = new ArrayList<>(); + collidableGameObjects.add(playerObject); + collidableGameObjects.addAll(harpoons); + return collidableGameObjects; + } + + /** + * Add bubbles to the game. + * + * @param newBubbles the list of new bubbles + * @param gamePlayManager the associated game play manager + */ + public void addBubbles(List newBubbles,GamePlayManager gamePlayManager){ + List collidableGameObjects = getBubblesCollideables(); + newBubbles.forEach(bubble->{ + bubble.setGamePlayManager(gamePlayManager); + bubble.addCollidableGameObject(collidableGameObjects); + bubbles.add(bubble); + }); + } + + /** + * Add a random bubble to the game. + * + * @param specialBubblePresent flag, if a special bubble is already present in the game + * @param gameView the game view for the bubble + * @param gamePlayManager the game play manager for the bubble + * @return true if a special bubble was added, otherwise false + */ + public boolean addRandomBubble(boolean specialBubblePresent, GameView gameView, GamePlayManager gamePlayManager){ + boolean specialBubbleAdded = false; + int randomNumber = specialBubblePresent ? random.nextInt(90) : random.nextInt(100); + List collidableGameObjects = getBubblesCollideables(); + Bubble newBubble; + if(randomNumber<60){ + newBubble = new RoundBubble(gameView, collidableGameObjects); + }else if(randomNumber<90){ + newBubble = new HexagonalBubble(gameView, collidableGameObjects); + }else{ + newBubble = new SpecialBubble(gameView, collidableGameObjects); + specialBubbleAdded = true; + } + newBubble.setGamePlayManager(gamePlayManager); + bubbles.add(newBubble); + return specialBubbleAdded; + } + /** * Add the objects to the canvas and handle update their positions. */ @@ -73,7 +136,7 @@ class GameObjectManager { gameObjects.add(livesLabel); gameObjects.add(playerObject); gameObjects.addAll(bubbles); - gameObjects.add(gameOverlay); + gameObjects.add(overlay); gameObjects.forEach(gameObject ->{ gameObject.update(); @@ -149,8 +212,8 @@ class GameObjectManager { * * @return the game overlay */ - public GameOverlay getGameOverlay(){ - return gameOverlay; + public Overlay getGameOverlay(){ + return overlay; } /** @@ -161,4 +224,4 @@ class GameObjectManager { public Background getBackground() { return background; } -} +} \ No newline at end of file diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java index d9635bc..0f86d84 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java @@ -2,45 +2,28 @@ package de.thdeg.greiner.superpangworld.game.managers; import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.Bubble; -import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; import de.thdeg.greiner.superpangworld.graphics.base.Position; -import de.thdeg.greiner.superpangworld.graphics.helper.Level; -import de.thdeg.greiner.superpangworld.graphics.helper.Player; +import de.thdeg.greiner.superpangworld.graphics.helper.*; import de.thdeg.greiner.superpangworld.graphics.moveable.Harpoon; -import de.thdeg.greiner.superpangworld.graphics.moveable.HexagonalBubble; -import de.thdeg.greiner.superpangworld.graphics.moveable.RoundBubble; -import de.thdeg.greiner.superpangworld.graphics.moveable.SpecialBubble; -import java.awt.*; +import java.awt.Color; import java.util.*; -import java.util.List; -import java.util.concurrent.TimeUnit; /** * The manager which handles the gameplay. */ public class GamePlayManager { - - /** The GameView on which the game is displayed */ - private final GameView gameView; - /** The manager, which handles the game objects */ - private final GameObjectManager gameObjectManager; - /** Generator for random values */ - private final Random random; - /** The current level */ - private Level level; - /** The player */ - private Player player; - /** The level manager */ - private LevelManager levelManager; - /** Flag, if bubbles should be spawned */ - private boolean spawnBubbles; - /** Flag, if all bubbles should be destroyed */ - private boolean destroyAllBubbles; - /** Flag, is a special bubble is currently present */ + /** Flag, if a special bubble is present */ public boolean specialBubblePresent; - /** Flag, if the bubble movement is froze */ + /** Flag, if the bubble movement is frozen */ public boolean movementFroze; + private final GameView gameView; + private final GameObjectManager gameObjectManager; + private Level level; + private Player player; + private LevelManager levelManager; + private boolean spawnBubbles; + private boolean destroyAllBubbles; /** * Create the manager handling the gameplay. @@ -49,39 +32,47 @@ public class GamePlayManager { * @param gameObjectManager the manager handling the game objects */ public GamePlayManager(GameView gameView, GameObjectManager gameObjectManager) { - random = new Random(); this.gameView = gameView; this.gameObjectManager = gameObjectManager; - boolean easyDifficulty = gameView.showSimpleStartScreen("Super Pang World","Start the game"); - - initializeGame(easyDifficulty); - initializeLevel(); + initializeGame(); } /** * Initialize the game. - * - * @param easyDifficulty the game difficulty */ - private void initializeGame(boolean easyDifficulty){ + private void initializeGame(){ + StartScreen startScreen = new StartScreen(gameView); + startScreen.showStartScreen(); + boolean difficultySetToEasy = startScreen.isDifficultySetToEasy(); gameView.playSound("backgroundMusic.wav", true); - gameObjectManager.clearAll(); - levelManager = new LevelManager(easyDifficulty); + levelManager = new LevelManager(difficultySetToEasy); try { level = levelManager.getNextLevel(); } catch (LevelManager.NoMoreLevelsAvailableException e) { - System.out.println("No levels were generated, exiting program"); System.exit(-1); } player = new Player(level); gameObjectManager.getPlayerObject().setGamePlayManager(this); + gameObjectManager.getPlayerObject().setPosition(GameView.WIDTH/2.0, 360); + initializeLevel(); + } + + /** + * Start the next game or quit the game entirely. + */ + private void nextGame(){ + gameView.stopAllSounds(); + gameObjectManager.clearAll(); + EndScreen endScreen = new EndScreen(gameView); + String message = player.lives<0 ? "You lost the game.\n Your score: "+player.score : "You won the game.\n Your score: "+player.score; + endScreen.showEndScreen(message); + initializeGame(); } /** * Initialize the level. */ private void initializeLevel(){ - // Set Gameplay variables spawnBubbles = true; destroyAllBubbles = false; specialBubblePresent = false; @@ -90,24 +81,6 @@ public class GamePlayManager { gameObjectManager.getBackground().setBackgroundImage(level.backgroundImage); } - /** - * Loose a life and remove all bubbles - */ - public void looseLife(){ - if(player.lives==0){ - handleGameEnded("You lost the game.\nYour score: "+player.score); - }else { - player.lives--; - gameObjectManager.getLivesLabel().setLifeCount(player.lives); - gameObjectManager.getBubbles().clear(); - gameObjectManager.getHarpoons().forEach(h -> h.stopSound()); - gameObjectManager.getHarpoons().clear(); - specialBubblePresent = false; - spawnBubbles = true; - gameObjectManager.getGameOverlay().flashScreen(Color.red, 100); - } - } - /** * Switch to the next level or end the game if every level was played. */ @@ -116,25 +89,27 @@ public class GamePlayManager { level = levelManager.getNextLevel(); initializeLevel(); } catch (LevelManager.NoMoreLevelsAvailableException e) { - handleGameEnded("You won the game.\nYour score: "+player.score); + nextGame(); } } /** - * End the game and show exit/restart screen. - * - * @param text text to display + * Loose a life and remove all bubbles. */ - private void handleGameEnded(String text){ - gameView.stopAllSounds(); - gameView.showEndScreen(text); - boolean easyDifficulty = gameView.showSimpleStartScreen("Super Pang World","Start the game"); - initializeGame(easyDifficulty); - initializeLevel(); + public void looseLife(){ + player.lives--; + if(player.lives<0){ + nextGame(); + }else { + gameObjectManager.clearAll(); + specialBubblePresent = false; + spawnBubbles = true; + gameObjectManager.getGameOverlay().flashScreen(Color.red, 100); + } } /** - * Update all HUD elements + * Update all HUD elements. */ private void updateHUD(){ gameObjectManager.getLevelLabel().setLevel(level.number); @@ -149,26 +124,20 @@ public class GamePlayManager { */ public void updateGamePlay(){ updateHUD(); - if(!destroyAllBubbles && player.score>=level.neededOverallScore){ nextLevel(); } - - if(gameView.timerExpired("SpawnBubble","GamePlayManager" ) && spawnBubbles && !movementFroze){ + if(spawnBubbles && !movementFroze && gameView.timerExpired("SpawnBubble","GamePlayManager" )){ addRandomBubble(); gameView.setTimer("SpawnBubble","GamePlayManager",3000); } - if(movementFroze && gameView.timerExpired("MovementFroze","GamePlayManager")){ movementFroze = false; } - if(destroyAllBubbles && gameView.timerExpired("DestroyAllBubbles","GamePlayManager")){ List bubblesCopy = new ArrayList<>(gameObjectManager.getBubbles()); if(bubblesCopy.size()>0) { - for (Bubble bubble : bubblesCopy) { - destroy(bubble); - } + bubblesCopy.forEach(this::destroy); gameView.setTimer("DestroyAllBubbles", "GamePlayManager", 300); }else{ destroyAllBubbles = false; @@ -195,7 +164,7 @@ public class GamePlayManager { movementFroze = true; gameView.playSound("freeze.wav",false); gameView.setTimer("MovementFroze","GamePlayManager",freezeTime); - gameObjectManager.getGameOverlay().showMessage("Freeze "+ TimeUnit.MILLISECONDS.toSeconds(freezeTime)+" sec",freezeTime); + gameObjectManager.getGameOverlay().showMessage("Freeze "+ (freezeTime/1000)+" sec",freezeTime); } /** @@ -233,31 +202,11 @@ public class GamePlayManager { } /** - * Add a random bubble with given values to the game. Percentages: - * - 60% normal bubble - * - 30% hexagonal bubble - * - 10% special bubble + * Spawn a random bubble into the game. */ private void addRandomBubble(){ - int randomNumber = specialBubblePresent ? random.nextInt(90) : random.nextInt(10000); - ArrayList collidableGameObjects = new ArrayList<>(); - collidableGameObjects.add(gameObjectManager.getPlayerObject()); - collidableGameObjects.addAll(gameObjectManager.getHarpoons()); - - if(randomNumber<10){ - RoundBubble roundBubble = new RoundBubble(gameView, collidableGameObjects); - roundBubble.setGamePlayManager(this); - gameObjectManager.getBubbles().add(roundBubble); - }else if(randomNumber<90){ - HexagonalBubble hexagonalBubble = new HexagonalBubble(gameView, collidableGameObjects); - hexagonalBubble.setGamePlayManager(this); - gameObjectManager.getBubbles().add(hexagonalBubble); - }else{ - SpecialBubble specialBubble = new SpecialBubble(gameView, collidableGameObjects); - specialBubble.setGamePlayManager(this); - gameObjectManager.getBubbles().add(specialBubble); - specialBubblePresent = true; - } + boolean specialBubbleAdded = gameObjectManager.addRandomBubble(specialBubblePresent, gameView, this); + specialBubblePresent = specialBubblePresent || specialBubbleAdded; } /** @@ -265,27 +214,19 @@ public class GamePlayManager { * * @param bubbles the bubbles */ - public void addBubbles(Bubble... bubbles){ - ArrayList collidableGameObjects = new ArrayList<>(); - collidableGameObjects.add(gameObjectManager.getPlayerObject()); - collidableGameObjects.addAll(gameObjectManager.getHarpoons()); - for(Bubble bubble: bubbles){ - bubble.setGamePlayManager(this); - bubble.addCollidableGameObject(collidableGameObjects); - gameObjectManager.getBubbles().add(bubble); - } + public void addBubbles(List bubbles){ + gameObjectManager.addBubbles(bubbles, this); } /** * Shoot a harpoon starting at a given position. * - * @param startPosition the start position + * @param playerPosition the player position * @return if a harpoon was shot or not */ - public boolean shootHarpoon(Position startPosition){ + public boolean shootHarpoon(Position playerPosition){ if(gameView.timerExpired("ShootHarpoon","GamePlayManager") && gameObjectManager.getHarpoons().size()<2){ - Harpoon harpoon = new Harpoon(gameView,new ArrayList<>()); - harpoon.getPosition().setTo(startPosition.x+6, startPosition.y-15); + Harpoon harpoon = new Harpoon(gameView,new ArrayList<>(), new Position(playerPosition.x+6, playerPosition.y-15)); harpoon.setGamePlayManager(this); gameObjectManager.getHarpoons().add(harpoon); gameObjectManager.getBubbles().forEach(b -> b.addCollidableGameObject(Collections.singletonList(harpoon))); @@ -294,4 +235,4 @@ public class GamePlayManager { } return false; } -} +} \ No newline at end of file diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java index 89c286d..21d0c1b 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java @@ -15,8 +15,6 @@ class InputManager { private final GameView gameView; /** The player object */ private final PlayerObject playerObject; - /** Flag, if diagonal movement is allowed */ - private static final boolean DIAGONAL_MOVEMENT_ALLOWED = false; /** * Create a manager handling the user input. @@ -48,12 +46,6 @@ class InputManager { default: continue; } - if(!DIAGONAL_MOVEMENT_ALLOWED){ - return; - } } } - - - } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/LevelManager.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/LevelManager.java index 7abd63d..8f9cacb 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/LevelManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/LevelManager.java @@ -2,7 +2,6 @@ package de.thdeg.greiner.superpangworld.game.managers; import de.thdeg.greiner.superpangworld.graphics.helper.Level; -import java.sql.Array; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; @@ -13,22 +12,22 @@ import java.util.Queue; */ public class LevelManager { + /** The amount of background images */ private static final int BACKGROUND_IMAGE_COUNT = 9; - /** The queue to store the generated levels */ private final Queue levels; - - private List backgroundImages; + /** The list with all the background image names */ + private final List backgroundImages; /** * Create a level manager. * - * @param easyDifficulty the difficulty + * @param difficultyIsSetToEasy flag if easy difficulty is set */ - public LevelManager(boolean easyDifficulty){ + public LevelManager(boolean difficultyIsSetToEasy){ levels = new ArrayDeque<>(); backgroundImages = loadBackgroundImages(); - generateLevels(easyDifficulty); + generateLevels(difficultyIsSetToEasy); } /** @@ -48,7 +47,7 @@ public class LevelManager { /** * Generate the levels according to the difficulty. * - * @param easyDifficulty the difficulty + * @param easyDifficulty flag if easy difficulty is set */ private void generateLevels(boolean easyDifficulty){ int overallScoreNeeded = 0; @@ -66,6 +65,11 @@ public class LevelManager { } } + /** + * Create the background image name list. + * + * @return the list with the background image names + */ private List loadBackgroundImages(){ List images = new ArrayList<>(); for(int i=1;i<=BACKGROUND_IMAGE_COUNT;i++){ diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java index 44462b8..63bb15e 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java @@ -14,10 +14,6 @@ import java.util.*; */ public abstract class Bubble extends CollidingGameObject implements MovingGameObject{ - /** The velocity of a normal right movement */ - public static final Point2D VELOCITY_RIGHT = new Point2D.Double(3,1); - /** The velocity of a normal left movement */ - public static final Point2D VELOCITY_LEFT = new Point2D.Double(-3,1); /** The random generator */ protected final Random random; /** Flag, if the bubble is in the spawning phase */ @@ -35,7 +31,7 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the bubble can collide with */ - public Bubble(GameView gameView, ArrayList objectsToCollideWith){ + public Bubble(GameView gameView, List objectsToCollideWith){ super(gameView,objectsToCollideWith); random = new Random(); rotation = 90; @@ -45,13 +41,17 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb speedInPixel = 1; spawnID = UUID.randomUUID().getLeastSignificantBits(); - position.setTo(HelperValues.FRAME_BORDER_WIDTH + random.nextInt((int)(GameView.WIDTH-width - (2*HelperValues.FRAME_BORDER_WIDTH))), -width); + position.x = 2*HelperValues.FRAME_BORDER_WIDTH + random.nextInt((int)(GameView.WIDTH-width - (2*HelperValues.FRAME_BORDER_WIDTH))-(int)(2*HelperValues.FRAME_BORDER_WIDTH)); + position.y = -width; spawning = true; spawnSpeed = 500; gameView.setTimer("spawn"+spawnID,"bubble"+spawnID,spawnSpeed); - velocity = random.nextBoolean() ? VELOCITY_LEFT : VELOCITY_RIGHT; - + if(random.nextBoolean()){ + velocity = new Point2D.Double(1 + random.nextInt(501)/100.0, 1 + random.nextInt(10)); + }else{ + velocity = new Point2D.Double((1 + random.nextInt(501)/100.0) * -1.0, 1+ random.nextInt(10)); + } } /** @@ -60,18 +60,16 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the bubble can collide with * @param size the object size - * @param speedInPixel the speed in pixel per tick * @param position the position * @param spawning flag, if the bubble is in the spawning phase * @param velocity the initial velocity of the bubble */ - public Bubble(GameView gameView, ArrayList objectsToCollideWith, double size, double speedInPixel, Position position, boolean spawning, Point2D velocity){ + public Bubble(GameView gameView, List objectsToCollideWith, double size, Position position, boolean spawning, Point2D velocity){ super(gameView,objectsToCollideWith); random = new Random(); rotation = 90; this.size = size; - this.speedInPixel = speedInPixel; - this.position.setTo(position.x,position.y); + setPosition(position.x, position.y); this.spawning = spawning; this.velocity = velocity; spawnID = UUID.randomUUID().getLeastSignificantBits(); @@ -87,9 +85,6 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb } - /** - * Moves the bubble a tick further. - */ @Override public void updatePosition(){ if(spawning){ @@ -100,19 +95,19 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb gameView.setTimer("spawn"+spawnID,"bubble"+spawnID,spawnSpeed); } }else{ - Point2D newLocation = new Point2D.Double(position.x,position.y); double speedFactor = 0.2; + Point2D bubbleGravity = new Point2D.Double(0,0.1); newLocation = new Point2D.Double(newLocation.getX() + (velocity.getX() * speedFactor), newLocation.getY() + (velocity.getY() * speedFactor)); - velocity = new Point2D.Double(velocity.getX() + HelperValues.BUBBLE_GRAVITY.getX(), velocity.getY() + HelperValues.BUBBLE_GRAVITY.getY()); + velocity = new Point2D.Double(velocity.getX() + bubbleGravity.getX(), velocity.getY() + bubbleGravity.getY()); // Wall bounce if((newLocation.getX() >= GameView.WIDTH - width - HelperValues.FRAME_BORDER_WIDTH) || newLocation.getX() <= HelperValues.FRAME_BORDER_WIDTH){ velocity = new Point2D.Double(velocity.getX() * -1.0, velocity.getY()); } - // Floor bounce + // Floor/roof bounce if(newLocation.getY() >= HelperValues.FRAME_WINDOW_HEIGHT + HelperValues.FRAME_BORDER_WIDTH - width){ velocity = new Point2D.Double(velocity.getX(), velocity.getY() * -0.95); newLocation = new Point2D.Double(newLocation.getX(), HelperValues.FRAME_WINDOW_HEIGHT + HelperValues.FRAME_BORDER_WIDTH - width); @@ -121,9 +116,12 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb specialBubble.freezeState = !specialBubble.freezeState; gameView.playSound("specialBounce.wav",false); } + }else if(newLocation.getY() <= HelperValues.FRAME_BORDER_WIDTH){ + velocity = new Point2D.Double(velocity.getX(), velocity.getY() * -0.95); + newLocation = new Point2D.Double(newLocation.getX(), HelperValues.FRAME_BORDER_WIDTH); } - position.setTo(newLocation.getX(), newLocation.getY()); + setPosition(newLocation.getX(),newLocation.getY()); } } @@ -146,9 +144,9 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb @Override public void reactToCollision(CollidableGameObject otherObject) { if (otherObject instanceof PlayerObject && !gamePlayManager.movementFroze) { - //gamePlayManager.looseLife(); + gamePlayManager.looseLife(); } else if (otherObject instanceof Harpoon && !spawning) { - gamePlayManager.destroy((Harpoon) otherObject, this); + gamePlayManager.destroy((Harpoon) otherObject,this); } } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidableGameObject.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidableGameObject.java index 49ca981..6616183 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidableGameObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidableGameObject.java @@ -10,8 +10,14 @@ import java.util.Objects; */ public abstract class CollidableGameObject extends GameObject { + /** The hitbox of the game object */ protected Rectangle hitBox; + /** + * Create a collidable game object. + * + * @param gameView the game view + */ protected CollidableGameObject(GameView gameView) { super(gameView); this.hitBox = new Rectangle(-100_000, -100_000, 0, 0); diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidingGameObject.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidingGameObject.java index cef8478..1f36dac 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidingGameObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidingGameObject.java @@ -2,7 +2,6 @@ package de.thdeg.greiner.superpangworld.graphics.base; import de.thdeg.greiner.superpangworld.gameview.GameView; -import java.util.ArrayList; import java.util.List; /** @@ -10,9 +9,16 @@ import java.util.List; */ public abstract class CollidingGameObject extends CollidableGameObject { - protected final ArrayList objectsToCollideWith; + /** The list of game objects that this object may collide with */ + protected final List objectsToCollideWith; - protected CollidingGameObject(GameView gameView, ArrayList objectsToCollideWith) { + /** + * Create a colliding game object. + * + * @param gameView the game view + * @param objectsToCollideWith the objects that this object can collide with + */ + protected CollidingGameObject(GameView gameView, List objectsToCollideWith) { super(gameView); this.objectsToCollideWith = objectsToCollideWith; } @@ -46,6 +52,11 @@ public abstract class CollidingGameObject extends CollidableGameObject { return this.hitBox.intersects(other.hitBox); } + /** + * Add collideable game objects to the list. + * + * @param objects the collideable game objects + */ public void addCollidableGameObject(List objects){ objectsToCollideWith.addAll(objects); } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/GameObject.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/GameObject.java index 88514c1..0b09b5c 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/GameObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/GameObject.java @@ -77,6 +77,17 @@ public abstract class GameObject implements Cloneable{ return position; } + /** + * Set the position with x and y coordinates. + * + * @param x the new x coordinate + * @param y the new y coordinate + */ + public void setPosition(double x, double y){ + position.x = x; + position.y = y; + } + /** * Adapts the position of this game object, in case the whole game world is moved. * diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java index 47a9f0e..49ef4b7 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java @@ -3,20 +3,20 @@ package de.thdeg.greiner.superpangworld.graphics.base; import java.util.Objects; /** - * Die Position eines Objekts auf einem Fenster anhand zweidimensionaler Koordinaten. + * The position of an object on the game window represented by 2 dimensional coordinates. */ public class Position implements Cloneable, Comparable{ - /** Die x-Koordinate */ + /** The x-coordinate */ public double x; - /** Die y-Koordinate */ + /** The y-coordinate */ public double y; /** - * Erzeugt eine Position mit den übergebenen Koordinaten. + * Create a position. * - * @param x die x-Koordinate des Objekts - * @param y die y-Koordinate des Objekts + * @param x the x-coordinate of the position + * @param y the y-coordinate of the position */ public Position(double x, double y) { this.x = x; @@ -24,80 +24,41 @@ public class Position implements Cloneable, Comparable{ } /** - * Veränderung der Position um einen Pixel nach links. - */ - public void left() { - x--; - } - - /** - * Veränderung der Position nach links. + * Move the position to the left. * - * @param pixel die Anzahl der Pixel + * @param pixel the amount of pixels to move */ public void left(double pixel){ x -= pixel; } /** - * Veränderung der Position um einen Pixel nach rechts. - */ - public void right() { - x++; - } - - /** - * Veränderung der Position nach rechts. + * Move the position to the right. * - * @param pixel die Anzahl der Pixel + * @param pixel the amount of pixels to move */ public void right(double pixel){ x += pixel; } /** - * Veränderung der Position um einen Pixel nach oben. - */ - public void up() { - y--; - } - - /** - * Veränderung der Position nach oben. + * Move the position upwards. * - * @param pixel die Anzahl der Pixel + * @param pixel the amount of pixels to move */ public void up(double pixel){ y -= pixel; } /** - * Veränderung der Position um einen Pixel nach unten. - */ - public void down() { - y++; - } - - /** - * Veränderung der Position nach unten. + * Move the position downwards. * - * @param pixel die Anzahl der Pixel + * @param pixel the amount of pixels to move */ public void down(double pixel){ y += pixel; } - /** - * Set the position to given x and y coordinates. - * - * @param x the x coordinate - * @param y the y coordinate - */ - public void setTo(double x, double y){ - this.x = x; - this.y = y; - } - /** * Calculates the distance to any other position. * diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/EndScreen.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/EndScreen.java new file mode 100644 index 0000000..9ad93d5 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/EndScreen.java @@ -0,0 +1,31 @@ +package de.thdeg.greiner.superpangworld.graphics.helper; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + +/** + * The class handling the end screen of the game. + */ +public class EndScreen { + + /** + * The game view to display the end screen on + */ + private GameView gameView; + + /** + * Create an end screen which can be displayed onto the game view. + * + * @param gameView the game view + */ + public EndScreen(GameView gameView){ + this.gameView = gameView; + } + + /** + * Show the game end screen. + */ + public void showEndScreen(String message){ + gameView.showEndScreen(message); + } + +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/HelperValues.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/HelperValues.java index d25c2ab..e9b66b8 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/HelperValues.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/HelperValues.java @@ -11,7 +11,5 @@ public class HelperValues { public static final double FRAME_BORDER_WIDTH = 8; /** The height of the main game window */ public static final double FRAME_WINDOW_HEIGHT = 432; - /** The games gravity */ - public static Point2D BUBBLE_GRAVITY = new Point2D.Double(0,0.2); } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java index e99d578..a73c3ac 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java @@ -11,7 +11,7 @@ public class Level { public int neededLevelScore; /** The overall needed score to surpass this level */ public int neededOverallScore; - + /** The background image name */ public String backgroundImage; /** @@ -20,6 +20,7 @@ public class Level { * @param number the level number * @param neededLevelScore the needed score to surpass this level * @param neededOverallScore the overall needed score to surpass this level + * @param backgroundImage the background image */ public Level(int number, int neededLevelScore, int neededOverallScore, String backgroundImage){ this.number = number; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/StartScreen.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/StartScreen.java new file mode 100644 index 0000000..9c067e0 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/StartScreen.java @@ -0,0 +1,40 @@ +package de.thdeg.greiner.superpangworld.graphics.helper; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + +/** + * The class handling the start screen of the game. + */ +public class StartScreen { + + /** The game view to display the start screen on */ + private GameView gameView; + /** The flag, if the user chose the easy difficulty */ + private boolean difficultySetToEasy; + + /** + * Create a start screen which can be displayed onto the game view. + * + * @param gameView the game view + */ + public StartScreen(GameView gameView){ + this.gameView = gameView; + } + + /** + * Show the game start screen. + */ + public void showStartScreen(){ + difficultySetToEasy = gameView.showSimpleStartScreen("Super Pang World","Start the game"); + } + + /** + * Check if the user chose the easy difficulty. + * + * @return true if the easy difficulty was chosen, else false + */ + public boolean isDifficultySetToEasy(){ + return difficultySetToEasy; + } + +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Background.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Background.java index 7d81dbc..73a6a45 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Background.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Background.java @@ -17,7 +17,7 @@ public class Background extends GameObject { */ public Background(GameView gameView) { super(gameView); - this.position.setTo(0,0); + setPosition(0,0); size = 1; rotation = 0; backgroundImage = "background_1.png"; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java index 3586fe9..1fbf297 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java @@ -15,7 +15,7 @@ public class GameFrame extends GameObject { */ public GameFrame(GameView gameView) { super(gameView); - this.position.setTo(0,0); + setPosition(0,0); size = 1; rotation = 0; } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java index f0eaa1e..eff1c39 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java @@ -24,7 +24,7 @@ public class LevelLabel extends GameObject { width = 109; height = 8; level = 1; - getPosition().setTo(GameView.WIDTH/2.0 - width,GameView.HEIGHT-height-60); + setPosition(GameView.WIDTH/2.0 - width,GameView.HEIGHT-height-60); } /** diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java index ecfb873..8aced7c 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java @@ -24,7 +24,7 @@ public class LevelProgressBar extends GameObject { width = 101; height = 8; levelProgress = 0; - getPosition().setTo(GameView.WIDTH/2.0 - width,GameView.HEIGHT-(height*size)); + setPosition(GameView.WIDTH/2.0 - width,GameView.HEIGHT-(height*size)); } /** diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java index fd56db6..0ca9dfb 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java @@ -25,7 +25,7 @@ public class LivesLabel extends GameObject { this.lifeCount = 0; - position.setTo(10,GameView.HEIGHT - height - 5); + setPosition(10,GameView.HEIGHT - height - 5); } @Override diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameOverlay.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Overlay.java similarity index 93% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameOverlay.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Overlay.java index b492288..ea1009a 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameOverlay.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Overlay.java @@ -9,7 +9,7 @@ import java.awt.*; /** * The game overlay for display text or color on the screen. */ -public class GameOverlay extends GameObject { +public class Overlay extends GameObject { /** The message to display */ private String message; @@ -21,7 +21,7 @@ public class GameOverlay extends GameObject { * * @param gameView the game view to display the elements on */ - public GameOverlay(GameView gameView){ + public Overlay(GameView gameView){ super(gameView); } @@ -29,6 +29,7 @@ public class GameOverlay extends GameObject { * Show a message on the screen. * * @param message the message to display + * @param duration the display duration */ public void showMessage(String message, long duration){ gameView.setTimer("DisplayMessage","Overlay",duration); diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.java index 47e2e84..8831e0f 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.java @@ -25,7 +25,7 @@ public class ScoreLabel extends GameObject { width = (int) size * 100; height = (int) size * 8; - position.setTo(0,GameView.HEIGHT-height-60); + setPosition(0,GameView.HEIGHT-height-60); } @Override diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Harpoon.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Harpoon.java index 133f22b..2881796 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Harpoon.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Harpoon.java @@ -4,7 +4,6 @@ import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.*; import de.thdeg.greiner.superpangworld.graphics.helper.HelperValues; -import java.awt.*; import java.util.ArrayList; /** @@ -19,9 +18,9 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { " kkkkk \n"+ "k kkk k\n"+ "k kkk k\n"; - + /** The pixel string representing the harpoon rope */ private final String harpoonRope; - + /** The identifier for the sound timer */ private int sound; /** @@ -29,15 +28,16 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { * * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the harpoon can collide with + * @param position the position */ - public Harpoon(GameView gameView, ArrayList objectsToCollideWith){ + public Harpoon(GameView gameView, ArrayList objectsToCollideWith, Position position){ super(gameView, objectsToCollideWith); + this.position = position; speedInPixel = 2; size = 3; width = (int) (7 * size); height = (int) (5 * size); rotation = 0; - getPosition().setTo(300,300); this.hitBox.width = width - 2; this.hitBox.height = (int) (440 - position.y); sound = gameView.playSound("harpoon.wav",true); @@ -45,15 +45,19 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { harpoonRope = generateRope(); } + /** + * Generate the rope's pixel string. + * + * @return the pixel representation of the harpoon rope + */ private String generateRope(){ - int pre = 3; int post = 3; boolean right = true; - String rope = ""; + StringBuilder stringBuilder = new StringBuilder(); for(int i = 0; i< HelperValues.FRAME_WINDOW_HEIGHT; i++){ - rope += " ".repeat(pre) + "k" + " ".repeat(post)+"\n"; + stringBuilder.append(" ".repeat(pre) + "k" + " ".repeat(post)+"\n"); if(right){ pre++; post--; @@ -65,7 +69,7 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { right = !right; } } - return rope; + return stringBuilder.toString(); } @Override @@ -76,9 +80,7 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { } @Override - public void reactToCollision(CollidableGameObject otherObject) { - - } + public void reactToCollision(CollidableGameObject otherObject) {} /** * Draws the harpoon onto the {@link GameView}. @@ -108,6 +110,9 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { public void updateStatus() { } + /** + * Stop the sound. + */ public void stopSound(){ gameView.stopSound(sound); } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.java index 35093dd..b892345 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.java @@ -5,9 +5,10 @@ import de.thdeg.greiner.superpangworld.graphics.base.Bubble; import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; import de.thdeg.greiner.superpangworld.graphics.base.Position; -import java.awt.*; import java.awt.geom.Point2D; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * The rare hexagonal bubble. @@ -20,7 +21,7 @@ public class HexagonalBubble extends Bubble { * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the bubble can collide with */ - public HexagonalBubble(GameView gameView, ArrayList objectsToCollideWith) { + public HexagonalBubble(GameView gameView, List objectsToCollideWith) { super(gameView,objectsToCollideWith); size=1; @@ -33,8 +34,18 @@ public class HexagonalBubble extends Bubble { this.hitBox.height = (int)(width - (width*0.1) ); } - public HexagonalBubble(GameView gameView, ArrayList objectsToCollideWith, double size, double speedInPixel, Position position, boolean spawning, Point2D velocity){ - super(gameView, objectsToCollideWith, size, speedInPixel, position, spawning, velocity); + /** + * Create a hexagonal bubble. + * + * @param gameView the game view + * @param objectsToCollideWith the objects this bubble may collide with + * @param size the size + * @param position the position + * @param spawning if the bubble is in the spawning state + * @param velocity the velocity of the bubble + */ + public HexagonalBubble(GameView gameView, List objectsToCollideWith, double size, Position position, boolean spawning, Point2D velocity){ + super(gameView, objectsToCollideWith, size, position, spawning, velocity); width = (int) (128 * size); height = (int) (128 * size); @@ -89,10 +100,10 @@ public class HexagonalBubble extends Bubble { Point2D.Double velocityLeft = new Point2D.Double(Math.min(this.velocity.getX(),this.velocity.getX() * -1.0),Math.min(this.velocity.getY(),this.velocity.getY() * -1.0)); Point2D.Double velocityRight = new Point2D.Double(Math.max(this.velocity.getX(),this.velocity.getX() * -1.0),Math.min(this.velocity.getY(),this.velocity.getY() * -1.0)); - Bubble bubbleLeft = new HexagonalBubble(gameView, new ArrayList<>(), size/2, speedInPixel, positionLeft, false, velocityLeft); - Bubble bubbleRight = new HexagonalBubble(gameView, new ArrayList<>(), size/2, speedInPixel, positionRight, false, velocityRight); + Bubble bubbleLeft = new HexagonalBubble(gameView, new ArrayList<>(), size/2, positionLeft, false, velocityLeft); + Bubble bubbleRight = new HexagonalBubble(gameView, new ArrayList<>(), size/2, positionRight, false, velocityRight); - gamePlayManager.addBubbles(bubbleLeft, bubbleRight); + gamePlayManager.addBubbles(Arrays.asList(bubbleLeft, bubbleRight)); } } } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java index ac9c90f..e36cfb9 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java @@ -3,7 +3,6 @@ package de.thdeg.greiner.superpangworld.graphics.moveable; import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; -import java.awt.*; import java.util.Objects; /** @@ -27,7 +26,7 @@ public class PlayerObject extends CollidableGameObject implements Cloneable { */ public PlayerObject(GameView gameView){ super(gameView); - position.setTo(GameView.WIDTH/2.0, 360); + setPosition(GameView.WIDTH/2.0, 360); shooting = false; size = 2; width = (int) (26 * size); diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java index c3006f4..74909d2 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java @@ -4,10 +4,12 @@ import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.Bubble; import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; import de.thdeg.greiner.superpangworld.graphics.base.Position; +import de.thdeg.greiner.superpangworld.graphics.helper.HelperValues; -import java.awt.*; import java.awt.geom.Point2D; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** @@ -56,7 +58,7 @@ public class RoundBubble extends Bubble { * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the bubble can collide with */ - public RoundBubble(GameView gameView, ArrayList objectsToCollideWith) { + public RoundBubble(GameView gameView, List objectsToCollideWith) { super(gameView,objectsToCollideWith); this.hitBox.width = width-20; this.hitBox.height = height-20; @@ -69,13 +71,12 @@ public class RoundBubble extends Bubble { * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the bubble can collide with * @param size the object size - * @param speedInPixel the speed in Pixel per tick * @param position the Position * @param spawning flag, if the bubble is spawning or not * @param velocity the initial velocity of the bubble */ - public RoundBubble(GameView gameView, ArrayList objectsToCollideWith, double size, double speedInPixel, Position position, boolean spawning, Point2D velocity){ - super(gameView, objectsToCollideWith, size, speedInPixel, position, spawning, velocity); + public RoundBubble(GameView gameView, ArrayList objectsToCollideWith, double size, Position position, boolean spawning, Point2D velocity){ + super(gameView, objectsToCollideWith, size, position, spawning, velocity); this.hitBox.width = (int) (width*0.8); this.hitBox.height = (int) (height*0.8); redBubble = true; @@ -90,16 +91,16 @@ public class RoundBubble extends Bubble { public void destroy() { gameView.playSound("burst.wav",false); if (size > 1.25) { - Position positionLeft = new Position(position.x - (width/2.0/2.0), position.y); - Position positionRight = new Position(position.x + width - (width/2.0/2.0), position.y); + Position positionLeft = new Position(Math.max(position.x - (width/2.0/2.0), HelperValues.FRAME_BORDER_WIDTH + 2), position.y); + Position positionRight = new Position(Math.min(position.x + width - (width/2.0/2.0), GameView.WIDTH - (2*HelperValues.FRAME_BORDER_WIDTH) -width - 2), position.y); Point2D.Double velocityLeft = new Point2D.Double(Math.min(this.velocity.getX(),this.velocity.getX() * -1.0),Math.min(this.velocity.getY(),this.velocity.getY() * -1.0)); Point2D.Double velocityRight = new Point2D.Double(Math.max(this.velocity.getX(),this.velocity.getX() * -1.0),Math.min(this.velocity.getY(),this.velocity.getY() * -1.0)); - Bubble bubbleLeft = new RoundBubble(gameView, new ArrayList<>(), size/2, speedInPixel, positionLeft, false, velocityLeft); - Bubble bubbleRight = new RoundBubble(gameView, new ArrayList<>(), size/2, speedInPixel, positionRight, false, velocityRight); + Bubble bubbleLeft = new RoundBubble(gameView, new ArrayList<>(), size/2, positionLeft, false, velocityLeft); + Bubble bubbleRight = new RoundBubble(gameView, new ArrayList<>(), size/2, positionRight, false, velocityRight); - gamePlayManager.addBubbles(bubbleLeft, bubbleRight); + gamePlayManager.addBubbles(Arrays.asList(bubbleLeft, bubbleRight)); }else if(timeFreeze){ gamePlayManager.freezeMovement(1000); } @@ -148,7 +149,5 @@ public class RoundBubble extends Bubble { } @Override - public void updateStatus() { - - } + public void updateStatus() {} } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java index 2d44ba0..6fec866 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java @@ -5,8 +5,8 @@ import de.thdeg.greiner.superpangworld.graphics.base.Bubble; import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; import de.thdeg.greiner.superpangworld.graphics.base.Position; -import java.awt.*; -import java.util.ArrayList; +import java.util.List; + /** * The green bubble with special abilities. @@ -79,7 +79,7 @@ public class SpecialBubble extends Bubble { * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the bubble can collide with */ - public SpecialBubble(GameView gameView, ArrayList objectsToCollideWith) { + public SpecialBubble(GameView gameView, List objectsToCollideWith) { super(gameView,objectsToCollideWith); this.freezeState = true; this.hitBox.width = width-20; diff --git a/out/artifacts/Programmieren_2_jar/Programmieren 2.jar b/out/artifacts/Programmieren_2_jar/Programmieren 2.jar index 29ac19a4c11f5eece6a9bd53ede1e1fed50dd884..0484a991e2920918e67d53f105fa373c105d3213 100644 GIT binary patch delta 40055 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 Rp(5blln4ry)PX?h{{TxT-~<2w delta 38626 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 G?EeF4lAY=R diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.class index a211af4b7beea1b161def0abc2db87327d58b4a7..42f20b8c25e9322fe78f1bac0b048433b5812c33 100644 GIT binary patch delta 63 zcmX@de~y2HD!ZZ}0}F!?13!Z>g9L*JgCc_{gBF7rgC&DFgFjFti9vF*8+#b90s}ix Pj*meJD6c$uCA%sB6Y2;s delta 63 zcmX@de~y2HD!U>-0}F!y13!Zxg9L*RgCc`4gBF7bgC&C~gFk~9LlT4dWHJT5_yS@ofrZXr^KW_l87rVu}r`=No?vQCJxR~Agra0EG%oqN^%l< zaUUUEr3az(q6ckh%hA|rl0t9VQd)YKUbOU}_kFiO`_1f1yOI@KR`_A<+nJs3ee>qc zdo#~Zym;s_04s&hk1~||P@$m`RRXn_>*IPLrpF_J4a1ikp_D*XXEYv7tr942ZW;1n zPUfR@DjExH)Z<}u%nu*R=b{>#565VjhZ=!%!$u%A5;h`%h-F0Mh80Mr6NZ%_^iI=? zg#!_N%m|F>aXn&K$-r8^*&5f`O;l_taDlph#mb{FI2XsF&WCyp^RYl+p87!FnF{on zG1C(8_xG*s-L!q}#;&d8Ymd)%2mLq>$NR8Q!wEQ1;Phgsjz^81iscXmfdxq;rF5+^ zt?rl^8toh7LEYp+krZg~ z%-S8mnOCDp!>RJ)IU~B2FwJ;UHoihbvuv!EhP6$Z^r2OtXU6GSdSWCRN(Q21W9GO{ z^?`n4+=vZWCf6>R?A9$mTCi05$TETU=KdKGNg>Bz!ImM(F`(fzoX!=A<>3pgo*8sz znn54V6gX!_dPhL&*N2UmA7@~xB-^gxl{lNeq{ym1x^>Ak6#xl#ltyqcWLkzpaHUP~ z91W{*E(s>HeI*if!AY>IG=lxnaUMb+4a<%xeq3a8+p1w3UM-*{JiP+v6;H7sK1p68&`~r=H)d@Z zH!M=|<6@iOWg2u0Go*4FvV)6KJhv&ZOd2O4tih0JvN9AibgPajG@@YyQ6?)r6fzP_ zmyOLWp1{2$9S^0VW}JB`o=lG!mVz185W^Um?J%v?dT2yoQS-EeWC}3_>fIF5Wm)=e zJA=egUJVNj_9+c%jAzoJ%9rvJrfxkPX3lbyc+z{YWt$wkOT%tlDQ6K5cg11?3%z`p z=VCkxa2ovF&&c>%4X?xNnW7>_s@u+2@|$Q_xeIewU5*hXhhQB9u9C*OTHwLrGRQQi zgW$|7$qkbWAidZ*Tm(JVR_vx!n%_bye z{eGhiMz#U{xDk6~g1tpxO>ySQO|VmDM3=c$psVPOlx5Xx?9wAK z@}&IPRmX#I#E*ONb|2oM;hl2ZpFKOWl3?}}olb=H6eIh+c(;c8Bw95$+a|L|kB{qA zc^BTR;eB|&z;SH1x04LMUXXh4uC)D@0e$XZG!oZSX^RPBeU2MsPMNcadmbwXR|N$I zj~38%EBmafP&Xbes-o$dMuArJm|>crhKFTieR^!zur^5p%KL*E(qluq6_xK!V?}Bt z%1G5!LLkYxr_e@oB3x+uT5x7jaJf5|04klRz`G!%0%`8blc#fs$;Nc5ZOEP0?nGv4 zLpjz>re?eRg`7`Wc*~Tq{*poa>GV!25!g7z&x>BbK zIx}A8n&%B_yoe{gNojyLTtjAZLHxR$uC8#{;IT=w>kxKG;dgxk#|)-;VOXapoM3XS z9o^l4#2s71!;$o`%)wdarROwaAGRLm@dgX!LA8RJXi=|T{*J~MYuQAA*EX~@a~9w6dZ6TjD~ z<_KJL^oy7E9|u*%m3h>noHTPIT2S_Px6)S%i}N$8##{D1JZYpE&3e4ox?6HJv7KQxW{8O(c0)q==hN&UBr~FQ-~H ztnOx<^PriwLdKe?JPkFt261jf%jLC_M~rUMOeIr9TW6$3%y6=%3cvE>*Z7SOzt!+N z{9fP`bpurw$Y^}r9A%|YtrbV;JM>V>w0O;~9`n9E>Etr+AX`B%>$@yy*}MtDJtUa~JgT?a^bg!Dz||*5Z#xxJM7wRN~Km`~`pY z;cpuLE>HL?i@q=9?^dR|WXeo%-QwX|{F7CiBHSwD2l-(1`x+nqEpP7s(eNyOT8rmN zZWf5%1WK?fyePr`r{PCcDC_D+>4XtqdRFI}763_Yd-&b!PU}$r7%5vQny^EJ&&+>wfCV`kH#O zRHUA)X{je`=~=uF5r_ZOVEeIbV-cLc4*;SH6^hS2tp^}l55u?h0On4>-&Q;N2x=$M zz_ydvcJc%oU2(B1E}_`6we0}fCa|3H8B#uL0xKx5lyYzaos`d$a`yy!D6f@r-vln8 zyk5!!6S$D_MN-~8fi09Tmhz<&*#0m%m*Kxi!$HKsO64J+$-r{IASvuJ0P9Q?t<=okA9#sDajJ zO{ProS#%h28adJ5M&K<6aYY$6OL6f*?3Cg|{I*=#ppLT#YpZjx0reQb$(*q}uSJfI zIke5ku%CJ-__fq;w@gy9{f(=QkK>@j<0_&`-1)7Oc+L8@)}_l1;SFH-HD$C;M)y2& z0DY^H7OH1qQtEBB$7Ss~ABU7)V&O18LHtUtmE=;cxY+iWUp-0&cHboXY*vr4?UVQv zf2D5@5PJ@FSmo^%C+KRho{zuvXvj*Zol5y;j3t`Sm;|ei8m6laiMP#cW+)$A-%0a+4~Gy4=i<- zV~n_wn;CPaluknE9dtnKF{6?YTbm#@detdiR&&cSw)Qv4svFF?Y>F&eUT{i#^+Hl zdc_O;x1A5xg6A>M$NG%Gm$F{|9Q8@vdpU8(%a>5RKw3aH@sBRPFC$;*X4sgP$re*f!kL)crktzW{^n`5;dh01@~Bepq1e1^I)Y zojSPIFOLPz;2@vUKjt#fyp4bFa=p}!h_`W<-p)vMhX-gbevF?0wPo_K;sA}%kyMmj z*2Z|VZ0RK4LqBX}@VR@li)lyrOSs=JWenL)@4rmpPK~rOzDi>ARaB7CV?KVycq607 q&-qq{U*I`D7xDd<{QCp`gnu~Fzwlp2dV#Z(D1JW5LJ?2(K4#?BGC3V@gc%Be4=FBp`=iD`1-l+hF5B+9q8|YkBc%SKVES z(nr!JZIZSmr0=Bfrtf#sQ<-zpbNUDL^zZ1u(BFFc&8)0lgup`lV9ni`x!?Wf&Yih; z{ICCg_)h@G@PUR7bSAJxM;EpV^j3Ea;SMWP&7b~0l*Yi2%U`GJOhbavwb>`q{hjtB7(fu~!clPnqz4SK%f6#D3F z*d>t2ma|#g^aTb&G7VN!(&9&TJS5F+TQ$6r>pH&d+^6GXva?4nIYjjncvv94DJjn= zty(!hX%&lZ#i03Q#;ln3g6Gn!zCUGn8usIW+~AK3939SVirDD&l-&0RFsx$)quf@z z0bk(M=AfI?OeOG$z*C#jyA4vt$eOl>F&vO&lR6&5;|xeeR*i9o+oq`iNbqob1Q&Cz zXVwTF3JD(7@dTbELBBrMCcy}t1dq2zFk@9rzeey_Nbo5gC-AiNV12Ajf)O|gPPRvI z%E+x1Jh$xRHJl6yKBMClPLp7^KGr6|2%H3G1SZ;uL3u@;_V}Y=I^_4PjttHUbgjs4 zffMaSUmcdr=84fVGhPO!x(ya=5}_SB}TyPm1ZX4bS^htvC*VpnxoxGbmVa%PF? zbZ~eimK#>ej+)K<>GgfU>KKB)=`mYJzVROn>L(^!Q9rpXcZhID0__Qx!78w>^jkU7%B5p zDs84tqy!f46|f$cGhupFsORq$wZTgYbW7UJ(*--ZZgZ|&%$nYkJa7Vi88>Ix%Z6vk z?^@@UVAZ1YCO3BtPr@Cl4EkuBEE2+U=x|GLH`P!QKt;WZ-uuGcR>w~jeB`*ZU3y>RcFSC60g3En{~ zu^e%iAsKC945Q}nDEYVT?+AjJ586gCn>U7TIaouFvGi%7{NAW<8}FPErdCZJ{f(E| z@z&2|BNmYs-LjW6Ph0ZF8i>w+?J+YhUrns_r(8Gi15!F`2CHt~-?(T<MP7;?mWU+1_Ai^3J-ooE=|e+OX|KD=<^N_|0t!hGlx|cN$+Kzt`~t zywi(!SaHodeCeib!}m=-@%}7u;1>Tib43Dw6?o{*Q<=O&zhNJZcCh^DL7#lwLf{I& zI`BDu^YvN(zRGVt>NwUX-%G0HvqZJ5{#DB&TeU1^Rm+-8wJac2%ZF*hG`lC3{uNRQSWxA+BC%uA0cngQ|C29_Y%fm}}nP0$l zd>LQi;ss}ItvMm1zBzaF?-*Rir`QaH&0aPUmp-zP|CHe?j;vDHg$ZRtr@pil+7NiP zj{F~5mt)r=ujs6c&0M@Y< zt>-8`3QTc5X%^1UV36;%F?#d~zL3(G!8~ReN@u9|EUVTGJvfJN(%aIn;hL}2*Zfs{ zt>(>S&6{0Z+`0ETHQY$)Z1BAhDRPslb$p`C?9N8e!Z#kx0*U`Z=>?tO_W2& zeVewwgYPzBaIq2O-6kLc-^2HtD5o2h-@8@0SCe;cO*zF@#z*()I$Zt*QIzgLCkN(v x_7?ch&2urJZoG>ha;y_S;%^6jjGwTTk@-{h{Tjc;AMi)^XzckD{(|?h=l`)C7Wx1H diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.class index 342acf66064189bb7b3007baf05e5a971342eaca..a92adfd891a3035059ebad4dc3d64070f92447f9 100644 GIT binary patch literal 10700 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 literal 11689 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 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/InputManager.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/InputManager.class index 17437a996919a755d7e34e86424f999f71bb2829..7441531a941bfc64804c283f839b6e8fbf995867 100644 GIT binary patch delta 561 zcmX|-O-~b16o#KWGre~@4sD%HQz4{L1Q{?!VkA~nv{*s#yNW1&bWvlFG?BVDM&j0x z>(Zz@*93_P3%8)Z#Ghacsh(Sji#g|>GxxmbdGEXA`~KpO&ek{J6paWE-w?!P&};Jp zxsa?OirGi3sMzB{W$krUh3nhfN@@GnTTQegSZ+Rf5pjf*G2>`^*dN+><=2#&vOB?> z+_i}7+%VjXxkY_rF%u|t$2N3t`EEqWLd+$m3rs8GnO3X0QeAGe+s(G&fqk#j;E|%= ze$@T;r;e9G0YtvU5y>ebPeHPe66A`+(^4%s8S@tSC4ao^IQ-ovdBS54q2kglwe$x zst>bE*--0XB&wp?WkhAOzwv&NDMaom9kKlsmg~-`<3~`OySRJKGs9)6oLmO4XHp6I btP~z|T-m#JReHCX=bkV_B!i1W{+QBVC%sQv delta 676 zcmXw0O>YuW6g_vo8HbPJqQOdou~-U3W7HCBRS=M(15~9{suoelm`E_`V7HBF1bJ4#>4GtRUujtS#9F%W0Uz$EZl`1flaWg{l2qS>~&q&admVFN%2P=7wc+B z)A5`z>6f3ilN)T9)nr7y>u?rD7!f{CVGh@L>pbTYt}}!9@;5l%WTefQXEU7s3OSwG zK_H#oL2%@g^Bkl8+6j)Q5kMRvOrpSe;&2SNP~-~8gneD&H0&!&tWbh+s6z_tXxwwt zUl0&&eTFJxQ=i{ZMq3Jf`uEKfl#%B+iy+4-o=hT!b1anN=bzyh%is~RSjBlbxPVu< zh}XD`9{1OnacnAwD=6bORNmqq*)y0~!2)}!G8%`mkA#jp2Z-x@5bYyFfq=9J{Dm4Z zz32CQizOq`%=3iC71)obVflF&HPpHC_NkD9d1CtwE+j1C-VyCSV{JCQiVh>**FMEF Hyg=+fu1I01 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/LevelManager$NoMoreLevelsAvailableException.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/LevelManager$NoMoreLevelsAvailableException.class index fab1ae283fcf88aaa6d9744d2160ad6832685a58..516b5d86ce6658eeed4fb2ad9fa690f747d9cd8f 100644 GIT binary patch delta 12 TcmdnWvXx~46Jy9^MkW&g87Tua delta 12 TcmdnWvXx~46Jx++MkW&g85ILC diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/LevelManager.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/LevelManager.class index cc20fed5e9b01b8e146eed20d0ca01ec0214d4b8..5d73b87aba53db99958d73539831184bef221b9d 100644 GIT binary patch delta 321 zcmWNM%Su9F6otPdf1XQXX-Y(CWRp^&2HmxS!a*4YC6!&ho-#EFbsCvhdi!C!by#UXMmQUU#|y8ePgk&;Q-#|9PM?fWpUb;p}FYWm$9R}F)x?s=oyH0O<=PMHURQ50hg z5Mh|8uyOrl7VRl~OcNrZ9qV;w0S}AfTf)yWap^P5Dp`_TkRs0-F6-Qge#fT%u@d1U z_A%tD!7*EciW(<+&MpOZu*fjTt|VrdWKTca6GJ&kH#n7FeS(%~IsI)%l4o*xE?bWz eT?#5uV_XTdgym&i$%UXeV)RqR=9aqj82JYy@;eRy delta 315 zcmWNM$u5Io6o#L#`P+Zc{FI7F+M-w}VrQyhQM3^uk)kzr(4Xogp$SVDVD;Tdt%Qh` zMdNB*LE|h=-ZQ;<&gq6bVduB^`3sE>n&s$Z`tCrjKNBv~HXvg1i3l2p} zCgmWTTUN?Z+&Nr@WN zIMErq9NNJm%>WsprkP|{f7ug5IiV}^@?}uel37mw+0o>wIM1Z(<6KxsrHFGWnI+kk UM1>ov24y2opWI+m6;^}Me@NFiqW}N^ diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/Bubble.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/Bubble.class index 22d2411ca645b482b7dc91639988df496ffffa67..a1b72c56bef34d2de47795a05cd699d48694c4bf 100644 GIT binary patch delta 2297 zcmZuyYfzL`7=F&O`+cx{%f%2{6(N(71%bkFwDCf55nPIHl&00PEVRI|=q{k8txYOU zb}^2K(7h}wE3;tDTcTy9rFOqxwEEGX8viuY)TBM<+XbDeZ)eZ+u`jVyOp~R0jttnHJGbXsM3MZ;GAGXt9akB+8f5}{n{P#^sx2g7 zomQ1wm4FIV>R4c)3K;?=vQ*2JrxR^*juAgjK&(&(3k|r{s#qx>jyn;jqh4;ZWfg1l z7cns(J3MGKU_+CDZCY7bZe0Q#@Ed4Gi$Hv*uQlNHhgJ$?NKazM4DG<_Q9lO)2HKTh zV$c_=4Fvrmf1pj9pB*(&VL}Ev&?$elmTM~vti)Zi*j6^B0{0jQV-3q_2z0fnYM54= zccfoE1KPaZa-Xegyf**tHD)O7!0(ObqeIHMTG`AV^cvWLT4rus?(^N{yCLKW`Qouv zAT`+T^ZGrlR|PuSyuN}iPp2L8Fks+OJSKN*mx?FkDXm<4%D~fjM&|2vN!#$8j^_;w zs(5pV;YHG`Pm;&<6sH~A@S=g2kSLJQ8VCe^Zhxas$IJ4hJ~w_FUNx`-ugOc|?DwJWp6^ZQFp%LVB*3V0uFB5+fw6cztL0Q%CK(4qR?D!mC==jn=9lnzPINou5BcKJ_Jv^Rxd?$}5O|_mB$dMN% zPqt5W2Lde}?K*yvlaq_%cETnbl5-}u@UV1{MbKcu8-Uo31jO-ek(sGZxj(r)drs3s zDJcyRly-ZEQSKVTO#ZV%-NUGMS%*<0*Q8DfQ)NW3v>yeoz3?nbR`XQxhw@5;H{i7@ zMT(vCJGytlH;g+6QTYF+X=rWvulY{y)QTaF6-ecHF?T$bQVuS}B?xEXQsiSA+cFn( zk%tAGwPHH?TY!5|h;=B!Q@EVGC?;%I2!WXxW|-_~v4~(7XDnNhpMWUoP3$Hpd#E2yQ&}s|o1jbf;|y|`nip0T&PEc)GFDj53M*J)B{Er39xsi{P|d9`L@8=GUW1!Zi^aH( zH^TK;MJA}C7Vu1&aI`2&v7#tNi&CqTkfDmFG>aK+rgUwX;WSg^UBWP9)tj!P)lYyp z%WQhAdh90-6+*{)dPXrgL=4_WB1e+S@(HgjMinQ>f|`Cb^EHzYq+wa#qeyhc5rsi9 zL~XE$L-8Km2t#a89Qe-`Pq%$tV00}-s|JSekMCQKg`Ud1|PLwKXFYSPS| zhI^~jN>Uo`<9xQ26Pa~ER@mn@$w$*WBUtCOa_~kc8`Wf^H%ihx>Qm!JxRTYNGB@=- zh9sq=y!CNppC3f=HWp&cd1D$LQqJ8?EVTZdbr|bnrfJyJ5;a%*jE0W6Q0;adL{C5N zaE+j6w#~`k5H=4$w+_Ne)HX9na9m$p1pPM;Vm7^*P;D&QTG15$mnl4&YMGftrB%-4 zr0TOcv(K6_f%0OK;8u*s5;AZpnQ|L>cRSipkG1e(0~*kaMm9Mgv`HDdj=1agXH4+NoToPn@LY|uA>L!XU|z0 zD|I+#r}P#M;xD9>{E0-Xz!4m!k-!JIKgwR-9u`V;B%Tv?P_UTzXr}T(bL-{>!A(c6 z5rGeJEatqHXj*#S6|7{LpJ$mH7gexy@TGXQmWKAAUy?XC!3 zId>fCW{dXlLXen<&AjJ&aRvI!^y$$QV+~(|<2b<$C~T~-OmwoY9qdMRv>&Mg3h*&L gp^!w!PigqIIev@psT)U~hpqerzXU(x6n=*DU!%AiTmS$7 delta 2298 zcmZWqX>?OX6#gd5drA6|+M3cvTM8&zQnVr}rzoXh3k?L}lv>3NVj4=Iq}Ya~paukr zN8E7K5EgN-sHnwK6%-1ByDaYeit7*c9RIi+t>3(aQZ+ew?{0JF-fzA;*)#mWaMx>p z@7xWb96zpeT_Gk*;Tmfn*U}Pd>wI{)#XX2Fesoj{jF7@U;vB8=thCKVYn6d&Oc2mx zktOj!EG}Rx2@DIkP=kPuNd_h(C~zJZ4wkoPxeKN>w?^a9=9qxJH4?9D=DVb-YFNEo zX+2crgd0~I2%|y3U0)rXdSRe$#>`;#ggSwI>B-7(P!Y2YG^z+sUqo$SVojZLMGeeV zF2|xsQ*$^PZ*#JaCIj=4FCdmEt=Yf=Q=`v~76Ywd(T>K@{78K?vRGiGT<03;a$zhM z8CZ-Za*VyIum;x}xDMB|y@uw+tln0_qIE16D3sY*d2+r@ce{|l4F>E8YGYrO57-0c zPMnY14BT#(JO1MFRC)SRuXIt8yU(zUQmCKf!lD6lk+2%*bdMUIjUlJP(Y{WEy ztl2G*$kNF4cqkrmV6(hRE6}zWxEJ@yYqisD4+vCb5O&DJnooPkz{BW}KWp{Qt$0+& zV+J0V7wNT{jwb}l`^7qCr9)@8Tk({EPHdOG`icUr(vhjHCnM;1_V^xd+2u&)Vf1f#9Q-Z?$m7z@Q0wnPNh9cQ1c zbWIhTm2Q~nRq**$RXm*`ib>LzHB@~4ukgv1e(s}L9de^_#Ob&o+!T#P;}vqQdxYmB z7e2-(IzBZ}kI&>*_kQ;m0$S^W5D(RXujEqCsp4C?#pAbqFECJgJo)md$9Lj0q`FVh zj=1;~L4iB6hn}od2gqS)u;4jBgsEF;eL{*HpPZ3hoincS)^1$5ChYG*aePfTCd%is zOA^$KZd{pyb2~yE(6%G819LjL(uSRUj)sTN)0wvfIT(fl_)&~f4Cl8TXP^RQB=cEl z#t6i5HkM%|?#8*;hEdqXm4nh%;CZ}2jrAy=vr;AP#-1?C?V)1ynfB7MkCswcdeH%^ z4!4f6I$ngJ*h_Celg0G5;{X>}@REtZ%ajxXA)?`;y`2aQEH1F`z-erDluz%%JoShX z0)L)k2d4OaPI+$55St@~p>lWjki_x!E0E0;)ogzP+n>nxYfyv$PQfIc!#ia(f~dq4 zYEw~%X}AitJeBF3{yMD2r6vTmJPMZ42SIxu1nmj}maDvl$Ty*CM@fRB-87bS1KpIS zGI=@;FBUlafu@oi1MOspUheDY1IyGbM$& z3Zbq%#Jm`j+=wi{mGE?k7Mib-D{{Ss3sa(A#qd|WhCyL3+M2tu%nazvEgU#_7ZNj6 z1W``EV$Wbj(2JD;dgO1p#fcR`eW;TJlN}$ZF0{J@P2ecK%Bt8g27lQDzHdQ$6|3AmWWws6D?RO z)a8FOmYdA-!$x}%Uc>7g*HyeY-e6XN8-)#Tl0;;dxFy58eJo=P97TU7Fzqj_A|2$8Aqjyacq_BIjWDrFl$Gwq{VANlBoB7skqyu~P(<6d6b8^XWdpL6tF#B( z{M~r+IKH`T9Jmu+-a13r!kI{!dk#pa?Hjr>g8L3P-N*k%F0puh?52}*pf1jLkIe&5 zMxzBNQhe~@>1@*AX++Z6j!P7{nPk7$heD0`e3Y*cg-;xEPct`?5td l>P=qBmL+J+z|LU8Ai-b?lrdvaXE2|v!d}2=GkGfe0swy*4@&?5 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/CollidingGameObject.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/CollidingGameObject.class index 9f9131c0076f2afd02d8f5158c34bf10c60da373..c236acdebded7b2e4d407c8aeb683eb1ad39cfb5 100644 GIT binary patch delta 348 zcmYL@Jx{^_5Qg7t=?86Nu+aiabub{p&_o@;6yrxi{EC7DhQx&tLL7`TyPD`=ZuD0e zS#WUI+1W+^gNq?vA;ID9p1XVR&3(IH)7Ja&i}rZ=g|31x|WEyMG%Pr93Q=lUVvYJH`d=epitGJ0_j z8j`S(;v3^4o#7C)LLTIUaQrQHxoByuA6;s7NDXHU|r*ph6Gb`{vzoLEOD aW5bA!B?#5XLF#x?5ekJBoCwuMRR05E1vsw& delta 440 zcmZXP%`QVx6ouEh=l=DkgWmp2C8bD;P_0Qz6G|dzqe?@hqmHOFNR`Bhxlywp!3z-5 zfq^*>VZzKKkjB2Ph}7ilwbxna%Q|oNyVrW@JU#))pxm-LcA#)rJ+CItnzec&*JxBP z$S>xi76J$w2)Pl)fPk+rbAKS7g|H|kvv%blAgSk7fqa}UWsE-Lpw{CW>Z{V~H)xce)9f$UaeECNwSgjcT;Xi5z2j`M OlVwLiiPctDZGQvHol)cf diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/GameObject.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/GameObject.class index 103b97b5c727c7afda06e3e44036894cf0d5df46..6a677fd824732e0157f6d5eb91213537f69fa392 100644 GIT binary patch delta 380 zcmYL@OG`p=5XH~mYuvY(aJy<4Z6a!CMNt%$%V^Oe$dJ?d9Q$aXLxvH^61-;*zf(z5oFary7 z@M9JM%u|nHi*1S;x$XpHEbx30AuOR8N%SIx2`nSVeK|?|KS>-r*yZmb3}TP^%%HT7 z1DZ5P?6l)IoRpE0U*M1mW|LSapJyO^#QEL4k8u8DW)}!2tP0Ogxvp``oyK&B2RtJ1 E2k^Z~R{#J2 delta 330 zcmXYrJ1>KA6o;RG+vIKEzU@Y}Qt2#_po6f8nj{8kBp8IEiAyzj2Nq1KuElY`vznx_ zNSI8-7w|dE;xa`3)umLxdP6#)z~!k>DmB7(LQR zQPNI-%P1bkuoa|nh)>zl*(fXErIpywYEM}CPCC(g4a`Z4ymOKlZ zS0)p9)i2g2D{7k^y&7kbU3m+|ynF1+Pbd>{tGrYFC{^PPB}s?d&5CS<2igvFlTZ68 a-FaC3;|S5{*V?h#CD)qSs&2UBf#^T5&O$o? diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/Position.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/Position.class index 8209f1e212d6511da5f7f67618a4e816101c2891..12315e415fee091453828d4798b7fdbda93d2b78 100644 GIT binary patch delta 420 zcmYk1%Su8~6o&tEj>n_hqdAB$Me>4JnFfV}FtQ>C1tE5&3#M7x#meqiYtSRCsF!FG z%^Emr)F5cwtYOa(($Yd?v-ev6TI<{Y-Vd%jhj^>LQ~(U%=1D{h&%=h2WIGTz#F2($ z9X^~;MSYdd=+@{nTuKPgw;E71ll7nCDo_(ws@WR*<1b5tSzBOC)=fJeOjA z8dglfhM6YX{!hzX|D&^%u{f1g(M;D-B5e_WDjpaJ$fx=$#hHD&aSZ7Z+e>>0q zGO}dXTa^MfD5%GzEami6Fwg#lCf?cLoy^x>Envqced?nvTYSHPE1mWcOk$gQtV7`< d*JSKqw;uOU;%MTTecq=yXC*khz!k31{tJE%NLBy< delta 814 zcmZ{i%TE(g6vn^XcIM85w)jY`H58>LElor>M2rbV7TSeM8c|AUK&Xh1BGw{;^?|x^ zqnktG&cwuxOX6eU0ynPwA57f1@lPOp>WQJ85{v_e)Ju5eC9p$DyJa~^Xo7IX~s^R=csK%iVGOwOrb1wD*RV?O#j(MPH2^U;-HbkuVl{nvFr(+Yv;3eidFvvwP&s3{VC zU@*{gG)~Xkz-O5>v>hz7))8Zbdu7jSWgG*W9WEgZgY9zjS#}`b{TDLEO<QD?NMxy5&pzvW$4g(mLfA@;5VQ_pgT diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/EndScreen.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/EndScreen.class new file mode 100644 index 0000000000000000000000000000000000000000..272491dff91953996f7313a54a98cf378bdbeda1 GIT binary patch literal 726 zcmbV~+e*Vg5QhKh!I)Uvs;y@)yz2oBA_!6uM65SOFDkv?CQGs~U9PF1Lq zGeWjj@0nPHX}~IA2?fH5EA7O0rDuCus!(b>9*?9RasDLIfy-er@|6?Yz6^N7z6{;2 zqooW9i=G(Do{|&7QRi0OATRl?z)354a?k0xI#s@6K6?ROKc zLa$Zt5sqvBs4q>-T|}-VlsbGh*W+Pd>RZtdII`M_91-+{R;fP=<`Q4Ugx2qe{dB1< zf-#hFEWGI%-G*;Z*4#d+@ssTBJ>+zdYpV$0*@RfgAjtg)@I*JeN6w;Io& zM)MKI{ZvzBTSS&^1vyk Vwf6;Q&T%HTu+1344(l@5{QwE-vG4!@ literal 0 HcmV?d00001 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/HelperValues.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/HelperValues.class index 299fc2d1113e8089c31289992e67146471099f5c..0ec854e6a8f21ee533e8a67dd58466328cfc24c8 100644 GIT binary patch delta 130 zcmcc2dX1Uu)W2Q(7#J8V86+lhnK0T+E@!lv`1a)FgN*WK42lfw3`{^tCI(3cP6jRp zMh0#$j|a%-L*nxTWf&P)8Q6fN;N(CiF?AuJIuMV6frCL9Nb-Q$tPCOyqCg%agBXxx HVh{%at@REv delta 424 zcmZusO-lk%6g^KF$C)P0(!{XLveXt0M4Lzor?C=TL?42ynB)-?(@Z!{En4^+T-Lvc z7D7RL+Xnrd=st~B-o-udymRm2-0$$0q<;RqeE`@&sjqI=vNzVfrCSeO{hE8X`iW<| z-7T|Vdcl>$Bm2WAQO_!5Xc{C;Ge{-VEH@RzF(V_PVHR`!O0^s_E)1hlyF5CrHtXjt zhIC`1^=|)h*o#)$j_umrJqGp63p#CnXgi!Cam<}N-f3D+!2M0J&!E*^mv;^v%lEl2 zW1S&2(U>7JPK`We3(<*TWROG(4D-Z7NE6Qp-uwGlfFk0LL^=!+8qE^Z2^pcZF#vlR z$&1v53`DU+T^kP|hvm^<{(rehFH!M#$gNls$^cWZhzT2pu}x0+h>RtQDbNy@nh~pJPw@K z(<9+!47DdRmf0>txj&dRP)EanY2gAahLJCvEc8X-1WL$QC?{Rag_=|TGEtFFZaxpC zmpY+{=)!R`t}@qCLc|R9fX~E4iY3Ft@wrG8drYy;%OYu1N0T1x=7jbeVzl4ply$Tj znwrPXLSg3|COTL%ux_D?9>arw=3?lkVX}1PY#xbUYPj1UpGoFsO2)zHchBG;7w)o! zE4a$A=F7uF=`Et{#1+|o@`9%)4D5j6QU5=57)%%{&k|oSw8qqgSBu$HsC_<-$kQ1o z9*-tm$=oiSl`NDg!_)K0{@%V3v1v_KJKB}$^FP%_qeIo1Zn99G*pvCg+AA{N&n3hy zlBh&eS)z}oOP@$D+RI=xp4Vu-PS&1|0L e%b`8TsuI-3J35po1)2)jSxK(`Oy1T}JKq6a(%n7) literal 0 HcmV?d00001 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/Background.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/Background.class index f9a3f34c350e9e948109ad474fe9b42fb34f0223..bea1ca1aaf1b2ae01f6f72cf48f038a7b2306557 100644 GIT binary patch delta 382 zcmXX?%TB^T6g`6!3LQ#$6$O01V44u!u<v94QF5vZKube6l=B8VFW64jyMd4 z;K07>FtC~=lN>2Ys(okJk{c>A48}?8^sL)=E_&_b_40YIE1zaLCNbr`Fe{YjC}7(A zWK~tgEXN$?-S-0{f<-KavCOd|H7o8%MW;iTk}q00cqq5Td+Es7-x< zYC%}fU_#f&2#dInn9zMBL^AEee582*TaFezt|CyU!OG5@r%gIz+T zD*e(WhCS?;|4%j$r4CpSBjhMdikZTSrK(-PzfO>)Id#)8-GEmZu|=)#igI% z7nt}VE<86Z?s?rgGjo1ZKdGk|N0Tw|W4<331^5n26uq20xksow}fj>;3OfW9HS2z8Ue>c3o*xR`s_9b*#UL>B(IdkFs9+a}aop#w&$Yt2>bRdEXNtJ4 z&yaR95llyqU^}@|gvvWZ6dZ6Y@hV{QTAt|(Tv;f>W-mn?@{cvA!x4_TV`6EI#R%cI rYL#m&QIRrJY|PU(CzGE&(OTJxJHzf9_b!X_uoiZ-=7PL)qP714nq4_6 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.class index e740aa4bcaf19dc7c2d1dcba8800f944c459b3a9..5a0e6075351efcff7b41356a4710d740334ea0bd 100644 GIT binary patch delta 306 zcmW-bJx;?w5QX0aqS(o1W1Bb${|P@5ED(MQE`Wt-KvWb|q%g=uVidbTG+Y78a1Rg( zoCS%318@jttku5VdEe~Y`L=$n=NGDGujgmABup>kBub-rL?~|s!SlF3xU3#( zG8vlidG!lcBw!y0TuCnv3H}X-IAYyp?*di60bMge)9bJZS!@-FO1PoY$Lkd*<0N2tXIwVpUlp--oTtrk<)QJwhgaius z5hOkViC#g~{pQ!szIuuo)a>rkkcQIn{nK{%V=B=*M>_LC}xP?}`L zWzKkL%+XZezuqis-fL8A`5Ef(Ibh$L}D$Kv}6bRCINTP^%?c_R)`0g^;I-Hb2wj i>uBY{2~L@@`@j0b@5Gypt_xXUcLnq2JYh2l7Rf;%#zIfJVpjq4Hp;9Fir*z z1_d4lMFyqGGEA;)Dm)CT3~H0pnT)u&fHE3944MpDlMNZY1vnXW7|37=^!o%uKeMn1NBFnPA+q+;L&FP%wo{tZXbqun86sD^bwG2M|(++X=oy zAejihf$w1Bn|PzuIj8tO&U^8#IBZBRM~1RuktI`h&b>6D5D#u*)0KR_#!8x1#Tx78 z(K#%;Pq)vP4}#n5bXr$gi`Eqlnr0wpo>oL`ns3?lv((sD?4SgBvC9md3#p7`CKicC zd#P(Vdd0;74s`T^=-Gs{F5M>-bSabI>r_IZCoBY1^_W8c&UZpv{9dWu>rYrVUv9m+ kPsp*A%>S!6;nXfG{d=Xn%G`!!f=^m7m5te&hG~00zqkJ^>i_@% diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.class index ae38ad1825b5f5712b2f13b0585e0475c61203ce..ea8a5981cc7b080cea7eadea63d04e896b8b8371 100644 GIT binary patch delta 425 zcmXX?yG{a86r8)jvb$`A;7Wps@)lTB5Jm8T5-C(5(Z*L|LV+Q~2L%*TSs4ox6LM=m zfX)O$;U`#F84C+L5`V(P1KOOKlR0zl+%wR=wdX7o&6s3Jw95(p%Cvw2j|wk*43@@u zbHCoGHEZ>222(hnj~q$}FjRR?IOF?*Y*7>_2&tGwn0JJPB?{e)n2I^-2ZBdjP!UIh zTMQ>ka!8jLLScSu3@S1iQz}-F=1+#)XwRyOHLUX;RwQ&&o5=V*75Spt#|$q>A$J;6IHqC8p9Lp4rH;&__>Yov!C#D$ z#nDHwq{nPxACVW#14aD>iv*-C>(M?kJ!}kte@I^;y4io2OA2P7eLnkcDP}LY$Zjv$ MDy|9<{wY8F0^1o*Jpcdz delta 394 zcmXX?J5K^(5S;JsIF93jLg>-h9SefsK zsDV&W`6FyB)XK!4;es|hGufTp$^IDM#&dzGDpX8p@FT!a#Ioo_h!@$8CxTfgq8jE9 zW3c&^Xqya<>$97KOTt*GWYrYJ8Cv{>o$^;ExksCl8d8|&AtB>lK*oth4NIgO!lb;S z!Nw}T6Y6qyNZ0w7kdpHnHc;TYSPZ)m!Ip+1JPho1sJ1nfMyjnM$VKUp+5A}AXW8zP z)Mm`?TJjt7S#W?dL8e**a1R#*!aO&XP_Pf5fpENsu};gt6p`@`71w#Ij~TwFM1wg5 za76Rwp9^&~NRfY(>{0QhtxB9MW*>=aBI%X;NDr_KR1yQM5l}Ceh|{4SHiy99mCq=> e;Xls>WfN)Nw7y$S>SaIK^{Th&ZxZ1ju7_VYx<&s0 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.class index 4d0a9d3cfe0c6e4c66e7a231b3d08f05c7e35642..e0b6c5954dcafa9b3b5d8b075f20594b7368ab23 100644 GIT binary patch delta 263 zcmZ3=y@Gp#CnG#&(kZ&O9#no^DyWz=uQr1bQ9oY z&}T4UXE5YpFk;|gWH6hUpg7rvnPYM{Bd;hU17ih9-h_w26eP)5$;BYIc@2{lBj-d0 zRt6@Z%N!@aXVw=KVUQ7IlF{12AeO?B(!PyBVX_g6maGGVEQ1YDjTl5FgDry{*e{M? j$5pbZ%BTow05t)To^(5qGISY87FZ9p&H delta 258 zcmZ3%y_9={CnFap0|$dF4}%)u^1Z#0>Nk~2;1FMFMi)I+eENvbJ9R}UWn;D%A^cfj=b27_P zi#?O`^YjYx(m5Ga84P(Cj2L(r85k=-JQE%UQ!uZRi$Q7gCMGLJ&M6G63`{^LxJ>@a ztS_>KK}Li@L6AvCYYT%|3P(!&HU^c+rYu^r&J3~)Hb7-!5XB6(40d35yMV2)VNsRQ e64C=|lG(ywAl(jR@Mi-Fq4w-#kl^IKEUy7zV=g`b diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/GameOverlay.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/Overlay.class similarity index 55% rename from out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/GameOverlay.class rename to out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/Overlay.class index 89489ceddfbc5a91d21755e767bd12839d6adbae..dba49acf33354d3d71ecbcc3da46659fb6f43bd7 100644 GIT binary patch delta 88 zcmaFM`;d3SVn(aU51EZO-ezHDw3+;X*<`W=%SuL`$;Vh$b1F0NFsLvHGN?|jVvXa} sW8h`bXAojAnEa4+j-UwxAA>1_CWAQ;S}+7KSWWI@b7Hiee34BC09iQ|!Tz{g<1pvhpyU=D-<43?9d*qmf-7~B{bfVvog RBqM`6g9n%n0g_A%p#UzC8;k$| diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.class index 06601fa37e2fec6ede640729e489b21ff4aac398..91830d5229cd9dfe620e8a834c7d35a35d7a42bb 100644 GIT binary patch delta 484 zcmYk1Jx>Bb5Qg79;12HA3mPJdAo3v|2a0G!5JVLGj)_`WSzIgX&4?9R^Y%=%CQ(`YprTt=;yyzsz{S&lH~gf3OJC}IlY9P>zsOQ|Ru97&ksQ99AnSX8jY zk%5;XNAfv?fn9r$MwVm6s1%=$8cgN#wbE}fR@ zIW)QfaS{vBR^AXX`&j59Wrt-SR$s8D_fZ^rP`5fzjv$8Uz=_)$wv$T99`-E*(RBHn smC=AnUr7B!lSgPWVOSyz2P3o;%~@#d&sQE4GXFf;P=eu*S|uF)0(fLS6951J delta 510 zcmYk1OHW!s7>1uY$T@Hrj7^B(1uclkMMZ3DRVcLuZ&hs4G~L>TUAPewUFgcCZp|!R zbl1I>5YvS}z?Ccii2J7B0YjN&F5k@ezV9=?LQf(0{_meVV2RJyZd}EJ1c+&d7*+%h z8%O)c`;7y|;^l7A{PYFPl@)eM4x@_V<@aLPWsGr$mzo4g)38c0|Iv@*uMLGiQ>$ga zd3GtyBx!S@s-X;7hnyzQw0Tq|dsb6m&P1*H+!*tkR}3iBNl;whXcpSlsl8GWKp8=n zk?gYO9ToFn6#^ryXg=`qx8qBza8-IP@MFndHp_jP;U>}k7uIO5Nn~%Jym#Irel3p{ zHFMfGepVvRs?>uW32UrNC1MX4Az_0}Sv}(~gyaM%F`JO-+%lDGG1H{j*{@D>WiLy6XfT6m*~_(BwN`&ae?q^vR*&!885n;kSm&N|_C9AnzHjd{=Zf!^x_|xq z_FVu?xOdjQOIhPJea@1zCkt|VLSvDZihdWIaA|PsNP{lWWUg{nn7^y@%rnZGsOsZQ z`6o}!)A0a20{YlUFc|0_-V&M&9uN?ns?V7^HD5=LJY^pXJsDJe1u0Fwjsg@4I1Yyb zks)5}R()A1b+L{TsaA)Ap~0bu^q60!W05rG91TbOkx+P8N*C+!qQY!fO4Lf^Ygl3q zDn%K~uv|lpj#_!Xo>?q43l+Cl9C4u%#ZJ@$cKb4c!7c`}`CB>I44a z!Ro%qXlQt_V?1;q5FB-59X9B2phv*wt?1XVNnoV~ug$)|^DqG@a^n$f)zGhF8@8LZ z_C|H5jz_V}JY+9W8olNfdqa-2vs=gG7$7$Ok&)nVK%mNNPT9*klCE0hnLRr8Vl}af zgcEVNuna*RPe?$-q=aEe?h55wCl1Yu~7(>K7B{sMvG7~xuW70h4Xis|z z$22^xBZ_CtpB=>umf<-a$ML*?GCo3@y`6~~dQry-ykx3sf5u6i((sCoS8-aP)k3ya zEikXD8;cw9nvS!0UBERK36Jzigr$*giO)HKHjB8`+7jh>vQW!euhr&n!lhL7PaV`2 z3+0!jW|7(MTsx~Z%Us1q`q=#h2;}zs4>v95dRN8N5!XDCG2_N9e68WO1pbbB-hI#h zEh91q(z3<(=0utyel)M7RYjdpAYj6VJiLLmT))ZMRSHAJ=fHXDE^zk; z*LKb!qjJd%gi#fPW@I5fhD=Tm#*oeFA!8cZ`%lM^$IXJ-O_7liLn(LV#&i^UjzA2C z+-0GvY8uspJYQ#2dRExuXo#WJFyipV(0P;IY`Dm84Rn4>prVxBUB*ZkAs6NRUrhSF zB)S4!FtC*sF@P!zVJY6?4I>dT-o_>F7&{I|G0e2&@*P}eYI4N~gO1+iTA$OsN8J@l z6ui&DuAzo7hCOoH|a zKBe*+FBQW153Q&goI(f<>j+hqL(_Z$e_H%srw0oN?BiYnS(o4y+B5>E?E^6krUcbw zHk4$V6OUMAN9!cDibbu5o`H>gkvE|To0;wwE1d)rb;%?IKEvlp$1AM6q#|WRwIb=W zF3zW6D(5&C_yS*YFK}Zv_9*+_ZC&YQRQo+)7Th6*pO~sC%jPJJV_d2^Iyq#1obt$V zdU!8OUFIn>;#72kg7getNX3*vaDkmz$adU>GR{YuE|0HWFagCf#0(Qe=l>NRMC5 zMNnzM_8+*0@3S$BtKj1|TM5lXTvme4fFxS2ahyrv;I{Y}XOm6L+NrTZN;IVnQ`{+- YMvSw3a^f7{K>pNAj=sYW_zAiH0*TjeTmS$7 delta 1856 zcmZuyX?K%F6n^H-yCiRha2i5uN?W>6NK>fT1!zl43l*?sv5K)QDwUSDaA-d8kx- ztgf)#miRH_%|#WW4yq*`7MzJ z>R*4rcJRGGNoM<-oRxH8K;R@iD8vN1DZj=FFc3#jXEq~~0Ipu1S+IGgxciH;hwE6h zdf`=wXb4UUJ}xs;$m0@ls%ZZwVZ5a#ngokWCZH5~a?UkbH) z6G8)*rB~2AK>OBcb#R55MtcftqO|NxVZ$X}?7=C{wUC_439EvQG7lkCvc%`31`Ehr z1Z`w>J)+o-YV5`$(pH1lX;GR5kK`LT%`M}=9t<-=EuFzxM)@XXIjMPznsd|`c$T)@C3SRNPv;FR`lTqqGB#r)+pUQw&6HZO9IaTv7}ubk zR4v8B=*UFZN~;;@#CZ~DX>iDfX`l!1P{+DN4DV7h_+@ev-oyL6-X-H7(2KS{-IYBAK~L{60nPVox1uQm*lSRgt!Ez}& zN`(`k!4#%IrrLTi7n_;lEz^SPCbp!mK!GnNA&v4C(}?PFUPIV-`h2!+sPRo{2d-g% z8c$zBNTT&5JEHn{Cqqa#a1W5%WMH((?Bmp!rMtShT zhzR1U^@=E7@Gb$tfcRz%zWHdPuf{*XH=^;(w$zQ?bmq*N^PTyfGqd3Q<+ObMGxGt! z4!jw%goV8>twbyx8nBKJ7ce2YxROHc-8~f(OjvEI$?1rljQLLVv?qL3U0tzL-3)T9 zn+Gs#a5aSV?L_Q&t1sN#5kJ;bQIvA&3O$bneYmKg--b&VUDEbEYZ6|X?C0%J zJMG%n?6;3(aB6P6(cKbq-=Tj+k{m`5vqqK%o+!JJ6wmGKwkZ^sWjq`or>e2+(D z@z>jj$9O_%=cy56WSK}@j;DAAiBc5cIa%~PS)rjV64(Oe7Vv^71iZv6nk|&LiOznF FtiP8J&ustz delta 1079 zcmZ{i%TE(g6vn?hW%?LeN^5I)i3J1JQd3c)P{n6sh;1}BBEd?uq^KAY6CNh6Shz4K zg7qqh3cm5Rfq*O|F_E2aT>1xSqKPiukr=<3mRe%$q<6kK_k3r5=gj@(TlQ%mf4_YP zpb4+i+7Tt{mr12s&X|g2rPZ$P>+MZmnw=;S%H*mIyRi}L?(5$fiO|tF7gD~OM00wk zN`6x-+yYuMmD)eh+1b<8ClK~0m=rQ+0&>Yb?()XYCod*L1O44SA)}b=viMwyf1+ti zyOLh@?hKSnTcUEnx<>i(pG_qLCPPZu+!@*$W2BRNXArbq#EM$cWAtT zc%V)TZYohrEnaJ>O)eEi4V*H905x#ZPzpabAb>FHaFjqgM%=)S=P=?qj5snFdQKrh zblf;xRH~r@tYR_LE!@slNudk274QmUa|D0M$54QA#K=D+r|glCKCdF9@D{?=V=FHm zD%170ER?{VtjFc3Pw5_wy#w1h*ByEJzFhu9CZ9QV{OdCnvs@JDX0s6p=NU!L7|p(D z+EJSax0~2|;KANJk2mMJi+e^x%Z`q`iAT_YgJ?tx=Xr?E7$P{F=Z|Im_eo@d+F;_3 zWhPh1#Uh8!@rv5OJi_i)(*oMsC@mf&#;1gP5u4lj=$}WBH_sIh92Y$DbJ3duK04*F zbA3j`Q7^g%Hk_K)IDZ==H zDb7+b^F1C=Da;?mLp)+t-SwENfZirN!BeQL;Keg49zGGQ&FfW#SY~Yn)5ZsRju*UZ Ltb7`0@e;N_&>_En diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.class index 5f25fcfc010a449d0239377f03a2d8f048200270..005a4428df133b4ea71c0396ca0fda4ffca6a61b 100644 GIT binary patch delta 1526 zcmZ`(%Trrb9R5z;kei#3TtmU~E(jOeqDUYRDNsra0%BVkb#w;Wq;QLnw#l@Jqp6P> zt)1yu&!W=T=tefaDkQSd8U6rgbX_+(~(^_}12JNcn$yXm95 z9xr?XPs%x8!}Y5nX$eEu5%eOYp#oun0eS}N1^k&*b~>H0vQ~Ooz}-4B(l%2D9fpR- z5S71(>YR>h4Uc25fGcCIrUb-@XRr^&j|#2V(11oJU$T*_<2%?r8hVwz+_q1o&J?fg)6ma;ese^8I-b!mfJ4_GjE2fE zgkdiZYZy@l#W~{SuhNQ<`9~r`18gf|W#E=q2PunskZqGZ!W$u22%#<}6)d5_wU{OzDzFx$U_Fb$L$ z@D~s;oq0s4R_0MfQDbhRYVlegbyS*mlx91i)!fXXoyNM5k<8;De<`gwR8H+Fh18{v znCZ$Rt}b=pTb?llc2I|PAdbE-=-DpGt`!J4XyhxI~O6w^yV;=3;U{=&F z8k@*d1H^*N`Rfwu+QcRX4IDYmVvm+8p=qpSn%KQxhm)BH5#fqj$e{cFUJ;WKZ7ioC zY$T>t>IJ-VkLpx-Hhi*xnKd++RO2_{b*;n2&f+^>19JtOrWRYnBt_RvjH*zTq5$T3 z{u_K99~Zq=$(ys~&fV+C($Hli#vVajEag0!GDO2vcxw~aePne-^V2W#I%Uu zd9ep4L=8@gM!X=m1GT#Tm)f3}m<}HDL14dlNmlFeQG1Q)8+VJNOR!YZthC(p{1(m^ za7hs=wp(AA><4B^sW}qp6e~^2HGTLw1y$kPW_n#R~cw(!9FcfzUC6OQsRfDhk`%h-dr`3T-2`QMevP>;~%?NEDFWDB32*uv*3 b=V9y*d4bE1Id_sA%~cf|4wS delta 1546 zcmZ`(T})eL7=FI~owj@}Z8-uJkwRB~S{U2hD6m2c>kzhqTZc=AUaZn%DL<{+I&h12 z>XL;Uqkb0(Sy+}Oa%18Tw4!mzZoSfL6B83Jy!6f(Z}k1nDWZ!s>HD7ddEf8(-oJAm z1s?|A-|{$MheLsrqYj*5RE*eqM1VDkHB-{8!2QAfNwn8Peued+R?#aDduiy8#PE%m3g`BFNcUDg~JK(7oR<~S`=uUjcxr^HiqfzCg| zF)DGVfnU&G*5L%ln1tO1e3{rXbj$%2XE>5FBerHs9Fe(q0rHwjiFeD0a~$XOh&LoY zEiJ`A*R&I%jJFUb0yo=v2e!jZ4Q!n;sZ)T{7T z(GWIQ;18>4t)PumkeqEx?^O^Yqi5fU7y;#@1RSS-$fIT|I90PE9w%9Yl4(eaSlCiQ zT;6NKmm~+^BH2ngJPjY(Xxjqx)Q$)`Fo+=H2w@tXcmdtGh8}3-Swt^(=v1STH+E40 zl}aVxA}&!`7F0pC=;d7{YDT`UT0+V$##Nl1r!t=1hs4))EskSoz;U|ig!rj$kVQo! zpK{A!3L-T{T@Wk0sT|*gV%dg;YKfC;#&^v(t0G;+JXx^~Op_Yg#007M2HN$IEXn^; zxvO|_8z1W4+#%i);X?*t>>t9i!MJqDnK7Mlk=kYBr;782h4_smmNU>(jvQ|9L zI_QKP9hWm`E?f=G z?%~xcR%H#bgUo%j2tb;4{w18kJcgl(yYBJlIBH8|gt zod4>E!MR9VxkR6cWt>4?^wkeXl`3v;pixHqiD1T;+Fy&u^C?m%OVrcXY0Fo|R(;fG z|D4h^UI+P70yo94_0vwfTqS=m{l%!K*?S8L-bORtp*Q1Q`n=p0Sx=PN#XV2N@884y e%X|3b)5nO`#V?*1<09ZSWRoa)Lu7AyJO2h;d?z&k diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.class index fe6fe713f401db54c3b9846934599362ca77388b..24015121dd8c937e470f87c5c8d63b21015454ac 100644 GIT binary patch delta 2255 zcma)6dr(wW82_EUyZ0{F%R^WkK}2JG@DO3t0r82%C9p)1%^U6e^gmVFrpALgwp>^pq;Sx*}zY?yh8z z7U)YDEb-ad3E4r&!YmEN7|*~ORQj8(!Gby6_98j6X{A5uJPo?YC@ru$suh$m#Bh%} zl9!l!$aW3)p@P?%2ZuN?Ux8CY6&5f=8XleI-nkAe)KDjM<_f#JSVbvjE2w9PFaXxO z9aSk4>gx0cQML*<77HYVREke1QenkX@qa%ShbUdZuX*{z@nJ7Q2VK<)RdCEw(m#L+z#F>ehz zr-cRJ<}1|xT2Y{4zglcsAJBM>?^kn82}RtgMh969(2nW~-m15@c$~mVT7@(W!zr_nPT>v8{wB$qU-K4ePLsxjw@F9DBJ;9i&@*I?2K$?K zQxsSgq$_Y!OS6~)2ibguou$IgVF`UjVb|zlAxJDYu??x=BP1`YLCbbMW%8u zD!UgOs+~R`Qr7yEwcW~gxTfANLhSmV5u-fjE?C7bsaB^P#Jr56wHhK)?gEeIAKJ*BH&tUo{j0gnG zK@Sh+5*zO&4whgk-KzWOHoS;(T!)>-qJpKNl4ZidCd27xLni*j`!r=n5r^>sNhXS0 zi}U!9(qF_(d_M$8~gczi&K@@7KriBJX-_aP}y$!?Xe&)mxbHqXFq;#qD zZtlc3z$fegym+z&DT#^vWJILr7Ml$_z1T&r$=fhcgop1*^x}CzGGj3qNc#O=yu2HN zn!Q{8hhvKGlpaDau^Ep^Xr)D`7?IG<-s$>;j!Rmk(bl&JR z-(~9;{RO`C9UyF`c8fL$l*F|Te!(`*(@EqzEN(9!L86V5yM}Irb#!AlVKg?<32(-o z-~l@X&QgJ8gh`SlN`2u*$B{${#a8U*$YevYH6RNkoEhS>6XX$-{R&^x8bZ<~a=vPO YzsHZH3nyJE-3&ibGk(Ue_#ILI0C!*$-2eap delta 2024 zcma)6dr(wW82_EUclYjI?&7j8#^Q@ml9xg1VBiBIMtOwFE@6n83#^FX@(>f#+x1R*$Kr8iuf6Mf~i=;BHYLSk|%{PMyY}&8kS-iLnJ>ZNAgT#R9G3x6;x>O zVg;|4Bd1pRLN>BhEXGO=RYG5`^fs2LaHCK~8EQ1F#tH^$wWmozE%zCt(tM~F5i}4Q zpHOUp8I2m&iuklObzW~pu5V#gleb1C!B`<}(y$&6@_DA>@Qrv#!6prUJj^hQZ)OvD zj1n(p#FvVsM`o=pE35I&NGMjZ5nD8D#Wub|iJP)RLmq4v*s)Vof;cmFX?PsF8I(13 zo^`(5Y^qM4or>D5p#^*RaV0IRS;cfbrC~4j@$1T5(=!^L#eSY=zLP!2x0(-{4rq7* z2YIq(!RVJXyev{MH`F$I8mnr3;_NFLUd184*OJCw<7X|0*c-e_9WQmFp0}yzStKvC zI{1dLF|3rhQvPRHIBTIE=5VidUQ9wUS<{27@>Mce-Ho2|>H<$)k%w|*xDry#8EQDc z#-h7!SZA^DuT*@EiweFG$$ZQ6Mw}e^J(V|DpRAfHUo|u1M}DhqqWm*M9Pb=)3tw)t zv8%k^Ha-1Kbb+CpieW%IqR}&Kf0(dnj3$|k6rC!hYlMmL0KaTY_xF-)6d}M<AB& z*@#6ZCSeYa5*h=E)_A;yKB9t~f~jOfaQ!$&c8(LT4I(E9d7BUe-qAgc6P^GT0hNA$ zD={fKA<0NYE8;(0 zflrbYWHE)V4?;PQ)gI#?+7|S~T|(P?0~jC<++TeZo*-BmA|bFBtLESAMD@*1WXSz63+t)<@RjtU zPWY$r@@t8%Ns=b_;(-j~zjTJHBuh?N=$HsxXFLu=iR3i8OJt|X9l(YTI0&EI3ab!D zNWTTJ`3TiYf|#-?G$lYO)o2M#+)`v<8T=JkP8ZgLQz*wDs9-jFe&SHcQm~SxW0l_W z94cxCe#ZyYK!yrx--pB*=-d*U8T|g zo5kBm_beJ@(K+7i80UYax_oyJwo~8=eWFD~tlJ$33LX`C81y{C^~v(ViCW63P7g6S z|5HP57(N}GiCCI?aa;PxTq=E!^-JfMJme2}AYBE$n^Pv79fcP!WA3p zp-Bf?hgo4{C0#sm5^IFE~+N5Cg5u`E%)v?Mb}fAUUt1)eZufmiI2 SOg+eYCck3$-h7$Eo&^ArrX0-x delta 95 zcmew-IZ0|lB$Kzsu&MViy$k$x19s)GsZ`%+UvnPF~NhAQ+7y WdYe6xX(For$+y|PH}B`LX8{0L7a}A8