From fd910162a2b0f680294c81bc0e5583c8641fd6c9 Mon Sep 17 00:00:00 2001 From: agreiner Date: Tue, 22 Jun 2021 22:33:44 +0200 Subject: [PATCH] Aufgaben 12 --- .../game/managers/GameLoopManager.java | 4 +- .../game/managers/GameObjectManager.java | 62 +++------ .../game/managers/GamePlayManager.java | 59 +++++---- .../game/managers/InputManager.java | 15 ++- .../superpangworld/graphics/base/Bubble.java | 14 +- .../graphics/base/CollidableGameObject.java | 2 +- .../graphics/base/GameObject.java | 3 + .../graphics/base/MovementPatterns.java | 77 ----------- .../graphics/base/MovingGameObject.java | 2 +- .../graphics/base/Position.java | 12 +- .../graphics/helper/Player.java | 2 + .../graphics/helper/XAxisComparator.java | 17 --- .../graphics/immovable/Background.java | 8 +- .../graphics/immovable/GameFrame.java | 32 +++++ .../graphics/immovable/LevelLabel.java | 6 +- .../graphics/immovable/LevelProgressBar.java | 7 +- .../graphics/immovable/LivesLabel.java | 1 + .../graphics/immovable/ScoreLabel.java | 4 +- .../graphics/moveable/FollowerBall.java | 79 ----------- .../graphics/moveable/Harpoon.java | 22 +++- .../graphics/moveable/HexagonalBubble.java | 6 +- .../graphics/moveable/PlayerObject.java | 124 ++++++++++-------- .../graphics/moveable/RandomBall.java | 74 ----------- .../graphics/moveable/RoundBubble.java | 2 - .../graphics/moveable/SpecialBubble.java | 32 +---- SuperPangWorld/src/resources/behind.png | Bin 0 -> 345 bytes SuperPangWorld/src/resources/frame.png | Bin 0 -> 11026 bytes SuperPangWorld/src/resources/icon.png | Bin 0 -> 448 bytes .../src/resources/left_standing.png | Bin 0 -> 353 bytes SuperPangWorld/src/resources/left_walking.png | Bin 0 -> 364 bytes .../src/resources/right_standing.png | Bin 0 -> 363 bytes .../src/resources/right_walking.png | Bin 0 -> 376 bytes .../Programmieren_2_jar/Programmieren 2.jar | Bin 728213 -> 727823 bytes .../game/managers/GameLoopManager.class | Bin 2000 -> 1998 bytes .../game/managers/GameObjectManager.class | Bin 5696 -> 4868 bytes .../game/managers/GamePlayManager.class | Bin 7096 -> 7045 bytes .../game/managers/InputManager.class | Bin 2325 -> 2324 bytes .../superpangworld/graphics/base/Bubble.class | Bin 4916 -> 4870 bytes .../graphics/base/GameObject.class | Bin 3497 -> 3497 bytes .../graphics/base/MovementPatterns$1.class | Bin 1367 -> 0 bytes .../graphics/base/MovementPatterns.class | Bin 4244 -> 0 bytes .../graphics/base/Position.class | Bin 3546 -> 3479 bytes .../graphics/helper/Player.class | Bin 611 -> 630 bytes .../graphics/helper/XAxisComparator.class | Bin 1047 -> 0 bytes .../graphics/immovable/Background.class | Bin 1121 -> 1121 bytes .../graphics/immovable/GameFrame.class | Bin 0 -> 1113 bytes .../graphics/immovable/LevelLabel.class | Bin 1822 -> 1842 bytes .../graphics/immovable/LevelProgressBar.class | Bin 2654 -> 2674 bytes .../graphics/immovable/LivesLabel.class | Bin 1583 -> 1583 bytes .../graphics/immovable/ScoreLabel.class | Bin 1536 -> 1536 bytes .../graphics/moveable/FollowerBall$1.class | Bin 1011 -> 0 bytes .../moveable/FollowerBall$Status.class | Bin 1461 -> 0 bytes .../graphics/moveable/FollowerBall.class | Bin 3064 -> 0 bytes .../graphics/moveable/Harpoon.class | Bin 3120 -> 4342 bytes .../graphics/moveable/HexagonalBubble.class | Bin 1989 -> 1989 bytes .../graphics/moveable/PlayerObject.class | Bin 4051 -> 4518 bytes .../graphics/moveable/RandomBall.class | Bin 2598 -> 0 bytes .../graphics/moveable/RoundBubble.class | Bin 2658 -> 2658 bytes .../moveable/SpecialBubble$Status.class | Bin 1427 -> 0 bytes .../graphics/moveable/SpecialBubble.class | Bin 2392 -> 1974 bytes .../SuperPangWorld/resources/behind.png | Bin 0 -> 345 bytes .../SuperPangWorld/resources/frame.png | Bin 0 -> 11026 bytes .../SuperPangWorld/resources/icon.png | Bin 0 -> 448 bytes .../resources/left_standing.png | Bin 0 -> 353 bytes .../SuperPangWorld/resources/left_walking.png | Bin 0 -> 364 bytes .../resources/right_standing.png | Bin 0 -> 363 bytes .../resources/right_walking.png | Bin 0 -> 376 bytes 67 files changed, 221 insertions(+), 445 deletions(-) delete mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java delete mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java delete mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall.java delete mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java create mode 100644 SuperPangWorld/src/resources/behind.png create mode 100644 SuperPangWorld/src/resources/frame.png create mode 100644 SuperPangWorld/src/resources/icon.png create mode 100644 SuperPangWorld/src/resources/left_standing.png create mode 100644 SuperPangWorld/src/resources/left_walking.png create mode 100644 SuperPangWorld/src/resources/right_standing.png create mode 100644 SuperPangWorld/src/resources/right_walking.png delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns$1.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.class create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall$1.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall$Status.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble$Status.class create mode 100644 out/production/SuperPangWorld/resources/behind.png create mode 100644 out/production/SuperPangWorld/resources/frame.png create mode 100644 out/production/SuperPangWorld/resources/icon.png create mode 100644 out/production/SuperPangWorld/resources/left_standing.png create mode 100644 out/production/SuperPangWorld/resources/left_walking.png create mode 100644 out/production/SuperPangWorld/resources/right_standing.png create mode 100644 out/production/SuperPangWorld/resources/right_walking.png 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 9650cbf..9364328 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java @@ -16,7 +16,7 @@ public class GameLoopManager { this.gameView = new GameView(); this.gameView.setWindowTitle("Super Pang World"); this.gameView.setStatusText("Andreas Greiner - Java Programmierung SS 2021"); - this.gameView.setWindowIcon("Target.png"); + this.gameView.setWindowIcon("icon.png"); this.gameObjectManager = new GameObjectManager(gameView); this.inputManager = new InputManager(gameView, gameObjectManager.getPlayerObject()); this.gamePlayManager = new GamePlayManager(gameView, gameObjectManager); @@ -26,7 +26,7 @@ public class GameLoopManager { * Starts the main loop of the game. */ public void startGame() { - while (true) { // The "Game-Loop" + while (true) { gamePlayManager.updateGamePlay(); inputManager.updateUserInputs(); gameObjectManager.updateGameObjects(); 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 2b4ef85..6b20ec5 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java @@ -14,45 +14,38 @@ import java.util.LinkedList; */ class GameObjectManager { - private GameView gameView; + private final LinkedList bubbles; + private final LinkedList harpoons; - private LinkedList bubbles; - private LinkedList harpoons; + private final LevelProgressBar levelProgressBar; + private final LevelLabel levelLabel; + private final ScoreLabel scoreLabel; + private final LivesLabel livesLabel; + private final Background background; + private final GameFrame frame; - private LevelProgressBar levelProgressBar; - private LevelLabel levelLabel; - private ScoreLabel scoreLabel; - private LivesLabel livesLabel; - private Background background; - private PlayerObject playerObject; + private final PlayerObject playerObject; - private RandomBall randomBall; - private FollowerBall followerBall; - - private LinkedList gameObjects; + private final LinkedList gameObjects; /** * Create a manager handling the display and passive movement of the game objects. * @param gameView the GameView */ public GameObjectManager(GameView gameView){ - this.gameView = gameView; gameView.setColorForBlockImage('k', Color.LIGHT_GRAY); bubbles = new LinkedList<>(); harpoons = new LinkedList<>(); gameObjects = new LinkedList<>(); - this.levelProgressBar = new LevelProgressBar(gameView); - this.levelLabel = new LevelLabel(gameView); - this.scoreLabel = new ScoreLabel(gameView); - this.livesLabel = new LivesLabel(gameView); - this.background = new Background(gameView); - - this.playerObject = new PlayerObject(gameView); - - this.randomBall = new RandomBall(gameView); - this.followerBall = new FollowerBall(gameView, randomBall); + levelProgressBar = new LevelProgressBar(gameView); + levelLabel = new LevelLabel(gameView); + scoreLabel = new ScoreLabel(gameView); + livesLabel = new LivesLabel(gameView); + background = new Background(gameView); + frame = new GameFrame(gameView); + playerObject = new PlayerObject(gameView); } /** @@ -61,15 +54,14 @@ class GameObjectManager { public void updateGameObjects(){ gameObjects.clear(); gameObjects.add(background); - gameObjects.addAll(bubbles); gameObjects.addAll(harpoons); + gameObjects.add(frame); gameObjects.add(levelProgressBar); gameObjects.add(levelLabel); gameObjects.add(scoreLabel); gameObjects.add(livesLabel); gameObjects.add(playerObject); - gameObjects.add(randomBall); - //gameObjects.add(followerBall); + gameObjects.addAll(bubbles); gameObjects.forEach(gameObject ->{ gameObject.update(); @@ -133,20 +125,4 @@ class GameObjectManager { return harpoons; } - /** - * Adapts the position of all game objects. - * - * @param adaptX Adaption to the right. - * @param adaptY Adaption downwards. - */ - public void moveWorld(double adaptX, double adaptY) { - for (GameObject gameObject : gameObjects) { - if (gameObject.getClass() != LevelLabel.class - && gameObject.getClass() != LevelProgressBar.class - && gameObject.getClass() != LivesLabel.class - && gameObject.getClass() != ScoreLabel.class){ - gameObject.adaptPosition(adaptX, adaptY); - } - } - } } 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 241f39f..d91c1e7 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java @@ -12,7 +12,7 @@ import de.thdeg.greiner.superpangworld.graphics.moveable.RoundBubble; import de.thdeg.greiner.superpangworld.graphics.moveable.SpecialBubble; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collections; import java.util.Random; /** @@ -21,30 +21,29 @@ import java.util.Random; public class GamePlayManager { /** The GameView on which the game is displayed */ - private GameView gameView; + private final GameView gameView; /** The manager, which handles the game objects */ - private GameObjectManager gameObjectManager; - /** Flag, if the game objects were already deleted once */ - private boolean listHasBeenDeleted; + private final GameObjectManager gameObjectManager; /** Generator for random values */ - private Random random; + private final Random random; /** Das erste Level */ private Level level; /** Der Spieler */ - private Player player; + private final Player player; /** * Create the manager handling the gameplay. - * @param gameView - * @param gameObjectManager + * + * @param gameView the GameView for visualization + * @param gameObjectManager the manager handling the game objects */ public GamePlayManager(GameView gameView, GameObjectManager gameObjectManager) { - listHasBeenDeleted = false; this.gameView = gameView; this.gameObjectManager = gameObjectManager; - this.level = new Level(1,10000,10000); + level = new Level(1,10000,10000); player = new Player(this.level); - this.random = new Random(); + random = new Random(); + // Set HUD elements gameObjectManager.getPlayerObject().setGamePlayManager(this); gameObjectManager.getLevelLabel().setLevel(level.number); gameObjectManager.getLivesLabel().setLifeCount(player.lives); @@ -56,39 +55,44 @@ public class GamePlayManager { */ public void updateGamePlay(){ if(gameView.timerExpired("SpawnBubble","GamePlayManager")){ - RoundBubble roundBubble = new RoundBubble(gameView, new ArrayList<>(Arrays.asList(gameObjectManager.getPlayerObject()))); + RoundBubble roundBubble = new RoundBubble(gameView, new ArrayList<>(Collections.singletonList(gameObjectManager.getPlayerObject()))); roundBubble.setGamePlayManager(this); gameObjectManager.getBubbles().add(roundBubble); gameView.setTimer("SpawnBubble","GamePlayManager",3000); } - } /** * Shoot a harpoon starting at a given position. + * * @param startPosition the start position + * @return if a harpoon was shot or not */ - public void shootHarpoon(Position startPosition){ - if(gameView.timerExpired("ShootHarpoon","GamePlayManager")){ - ArrayList collidableGameObjects = new ArrayList<>(); - collidableGameObjects.addAll(gameObjectManager.getBubbles()); + public boolean shootHarpoon(Position startPosition){ + if(gameView.timerExpired("ShootHarpoon","GamePlayManager") && gameObjectManager.getHarpoons().size()<2){ + ArrayList collidableGameObjects = new ArrayList<>(gameObjectManager.getBubbles()); Harpoon harpoon = new Harpoon(gameView,collidableGameObjects); - harpoon.getPosition().setTo(startPosition.x, startPosition.y); + harpoon.getPosition().setTo(startPosition.x+16, startPosition.y-15); harpoon.setGamePlayManager(this); gameObjectManager.getHarpoons().add(harpoon); gameView.setTimer("ShootHarpoon","GamePlayManager",300); + return true; } + return false; } /** * Remove a harpoon from the game. + * * @param harpoon the harpoon to remove */ public void destroy(Harpoon harpoon){ gameObjectManager.getHarpoons().remove(harpoon); } + /** * Remove a bubble from the game. + * * @param bubble the bubble to remove */ public void destroy(Bubble bubble){ @@ -107,20 +111,24 @@ public class GamePlayManager { } } + /** + * Update all HUD elements + */ private void updateHud(){ gameObjectManager.getScoreLabel().setScore(player.score); double progress = (player.score- level.neededOverallScore+ level.neededLevelScore * 1.0) / level.neededLevelScore; - System.out.println(progress); gameObjectManager.getLevelProgressBar().setLevelProgress(Math.min((int)(progress*100),100)); gameObjectManager.getLevelLabel().setLevel(level.number); } + /** + * Switch the current level. + */ private void switchLevel(){ if(level.number==99){ System.out.println("You won!"); }else{ - Level newLevel = new Level(level.number+1,10000,(level.number+1)*10000); - level = newLevel; + level = new Level(level.number+1,10000,(level.number+1)*10000); updateHud(); } } @@ -130,6 +138,13 @@ public class GamePlayManager { * - 60% normal bubble * - 30% hexagonal bubble * - 10% special bubble + * + * TODO: Integrate all different bubbles, not only the normal red bubble + * + * @param size the size of the bubble + * @param speedInPixel the speed of the bubble + * @param position the position of the bubble + * @param spawning the flag if the bubble gets created in spawning mode */ private void addRandomBubble(double size, double speedInPixel, Position position, boolean spawning){ int randomNumber = random.nextInt(59); 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 70b188c..89c286d 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java @@ -12,14 +12,15 @@ import java.util.Arrays; class InputManager { /** The gameView, which displays the player object */ - private GameView gameView; + private final GameView gameView; /** The player object */ - private PlayerObject playerObject; + 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 + * Create a manager handling the user input. + * * @param gameView the GameView * @param playerObject the player object */ @@ -29,14 +30,14 @@ class InputManager { } /** - * Read the user inputs and perform actions accordingly + * Read the user inputs and perform actions accordingly. */ public void updateUserInputs() { - Integer[] gedruekteTasten = gameView.getKeyCodesOfCurrentlyPressedKeys(); - if(Arrays.stream(gedruekteTasten).anyMatch(k -> k == KeyEvent.VK_SPACE)){ + Integer[] pressedButtons = gameView.getKeyCodesOfCurrentlyPressedKeys(); + if(Arrays.stream(pressedButtons).anyMatch(k -> k == KeyEvent.VK_SPACE)){ playerObject.shoot(); } - for (int keyCode : gedruekteTasten) { + for (int keyCode : pressedButtons) { switch(keyCode) { case KeyEvent.VK_LEFT: playerObject.left(); 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 4633833..69e7771 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java @@ -11,16 +11,14 @@ import java.util.*; */ public abstract class Bubble extends CollidingGameObject implements MovingGameObject{ - /** Flag, if the bubble flies from left to right */ - private boolean flyFromLeftToRight; /** Random generator */ - private Random random; + private final Random random; /** Flag, if the bubble is in the spawning phase */ private boolean spawning; /** Spawning speed */ private int spawnSpeed; /** Unique id for the spawn event timer */ - private long spawnID; + private final long spawnID; /** Temporary movement action */ private Position nextPosition; @@ -37,7 +35,6 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb width = (int) (12 * size); height = (int) (12 * size); speedInPixel = 1; - flyFromLeftToRight = true; spawnID = UUID.randomUUID().getLeastSignificantBits(); random = new Random(); @@ -51,6 +48,7 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb /** * Create a 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 @@ -65,7 +63,6 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb width = (int) (12 * size); height = (int) (12 * size); this.speedInPixel = speedInPixel; - flyFromLeftToRight = true; this.position.setTo(position.x,position.y); spawnID = UUID.randomUUID().getLeastSignificantBits(); random = new Random(); @@ -87,7 +84,7 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb if(position.y >= 0){ spawning = false; } else if(gameView.timerExpired("spawn"+spawnID,"bubble"+spawnID)){ - position.down(width/4); + position.down(width/4.0); gameView.setTimer("spawn"+spawnID,"bubble"+spawnID,spawnSpeed); } }else{ @@ -122,7 +119,8 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb } /** - * Get the speed in pixel per tick + * Get the speed in pixel per tick. + * * @return the speed in pixel per tick */ public double getSpeedInPixel(){ 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 cc412d6..49ca981 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidableGameObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/CollidableGameObject.java @@ -35,7 +35,7 @@ public abstract class CollidableGameObject extends GameObject { } /** - * If a GameObject has collided with something, it is able to react to the collision + * If a GameObject has collided with something, it is able to react to the collision. * * @param otherObject The other GameObject that is involved in the collision. */ 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 4ff61f2..abb1f5a 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/GameObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/GameObject.java @@ -30,6 +30,7 @@ public abstract class GameObject implements Cloneable{ /** * Create a game object with default values. + * * @param gameView the gameView */ protected GameObject(GameView gameView){ @@ -59,6 +60,7 @@ public abstract class GameObject implements Cloneable{ /** * Set the responsible GamePlayManager. + * * @param gamePlayManager the responsible GamePlayManager */ public void setGamePlayManager(GamePlayManager gamePlayManager){ @@ -67,6 +69,7 @@ public abstract class GameObject implements Cloneable{ /** * Get the position of the game object. + * * @return the position */ public Position getPosition(){ diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java deleted file mode 100644 index 3d40629..0000000 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java +++ /dev/null @@ -1,77 +0,0 @@ -package de.thdeg.greiner.superpangworld.graphics.base; - -import de.thdeg.greiner.superpangworld.gameview.GameView; -import de.thdeg.greiner.superpangworld.graphics.helper.XAxisComparator; - -import java.util.*; - -/** - * Offers different movement patterns for moveable game objects. - */ -public class MovementPatterns { - - - private HashMap> patterns; - private Random random; - - /** - * Create the MovementPatterns object providing access to different movement patterns. - */ - public MovementPatterns(){ - patterns = new HashMap<>(); - random = new Random(); - - ArrayList square = new ArrayList<>((Arrays.asList(new Position(30,30),new Position(930,30), - new Position(930,510),new Position(30,510)))); - ArrayList zigZag = new ArrayList<>((Arrays.asList( new Position(300,200),new Position(400,340),new Position(500,200), - new Position(600,340),new Position(700,200),new Position(800,340)))); - ArrayList zero = new ArrayList<>(); - zero.addAll(square); - zero.addAll(zigZag); - zero.sort(Comparator.naturalOrder()); - ArrayList xFirst = new ArrayList<>(zero); - xFirst.sort(new XAxisComparator()); - - Comparator yAxisComparator = new Comparator() { - @Override - public int compare(Position o1, Position o2) { - return Double.compare(o1.y,o2.y); - } - }; - ArrayList yFirst = new ArrayList<>(zero); - yFirst.sort(yAxisComparator); - - - ArrayList centered = new ArrayList<>(zero); - centered.sort((p1,p2)->{ - Position pMid = new Position(GameView.WIDTH/2,GameView.HEIGHT/2); - return Double.compare(p1.distance(pMid),p2.distance(pMid)); - }); - - patterns.put("square",square); - patterns.put("zigzag",zigZag); - patterns.put("zero",zero); - patterns.put("XFirst",xFirst); - patterns.put("YFirst",yFirst); - patterns.put("Centered",centered); - } - - /** - * Get a movement pattern by its name. - * @param pattern the pattern name - * @return the movement pattern - */ - public ArrayList getPattern(String pattern){ - return patterns.get(pattern); - } - - /** - * get a random movement pattern. - * @return the movement pattern - */ - public ArrayList getRandomPattern(){ - int index = random.nextInt(patterns.values().size()); - return new ArrayList>(patterns.values()).get(index); - } - -} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovingGameObject.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovingGameObject.java index e1930f3..6c087df 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovingGameObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovingGameObject.java @@ -8,6 +8,6 @@ public interface MovingGameObject { /** * Update the position of a game object. */ - public void updatePosition(); + void updatePosition(); } 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 fe061a3..47a9f0e 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java @@ -23,13 +23,6 @@ public class Position implements Cloneable, Comparable{ this.y = y; } - /** - * Erzeugt eine Standardposition für die Koordinaten (0, 0). - */ - public Position(){ - this(0,0); - } - /** * Veränderung der Position um einen Pixel nach links. */ @@ -39,6 +32,7 @@ public class Position implements Cloneable, Comparable{ /** * Veränderung der Position nach links. + * * @param pixel die Anzahl der Pixel */ public void left(double pixel){ @@ -54,6 +48,7 @@ public class Position implements Cloneable, Comparable{ /** * Veränderung der Position nach rechts. + * * @param pixel die Anzahl der Pixel */ public void right(double pixel){ @@ -69,6 +64,7 @@ public class Position implements Cloneable, Comparable{ /** * Veränderung der Position nach oben. + * * @param pixel die Anzahl der Pixel */ public void up(double pixel){ @@ -84,6 +80,7 @@ public class Position implements Cloneable, Comparable{ /** * Veränderung der Position nach unten. + * * @param pixel die Anzahl der Pixel */ public void down(double pixel){ @@ -92,6 +89,7 @@ public class Position implements Cloneable, Comparable{ /** * Set the position to given x and y coordinates. + * * @param x the x coordinate * @param y the y coordinate */ diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java index 7328103..bb6bb0f 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java @@ -16,11 +16,13 @@ public class Player { /** * Create a player. + * * @param level the level the player is on */ public Player(Level level){ lives = MAX_LIVES; score = 0; + this.level = level; } } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java deleted file mode 100644 index adf2cb0..0000000 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.thdeg.greiner.superpangworld.graphics.helper; - -import de.thdeg.greiner.superpangworld.graphics.base.Position; - -import java.util.Comparator; - -/** - * Compare two Positions regarding their x values - */ -public class XAxisComparator implements Comparator { - - @Override - public int compare(Position o1, Position o2) { - return (int)Math.signum(o1.x-o2.x); - } - -} 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 bbef723..4921be5 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Background.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/Background.java @@ -3,8 +3,6 @@ package de.thdeg.greiner.superpangworld.graphics.immovable; import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.GameObject; -import java.util.Random; - /** * The background for the game. */ @@ -20,8 +18,6 @@ public class Background extends GameObject { this.position.setTo(0,0); size = 1; rotation = 0; - - } @Override @@ -30,7 +26,5 @@ public class Background extends GameObject { } @Override - public void updateStatus() { - - } + public void updateStatus() { } } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java new file mode 100644 index 0000000..3586fe9 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/GameFrame.java @@ -0,0 +1,32 @@ +package de.thdeg.greiner.superpangworld.graphics.immovable; + +import de.thdeg.greiner.superpangworld.gameview.GameView; +import de.thdeg.greiner.superpangworld.graphics.base.GameObject; + +/** + * The frame around the game. + */ +public class GameFrame extends GameObject { + + /** + * Create a frame object. + * + * @param gameView the gameView + */ + public GameFrame(GameView gameView) { + super(gameView); + this.position.setTo(0,0); + size = 1; + rotation = 0; + } + + @Override + public void addToCanvas() { + gameView.addImageToCanvas("frame.png",position.x,position.y,size,rotation); + } + + @Override + public void updateStatus() { + + } +} 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 15650ba..ddb9933 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java @@ -15,6 +15,7 @@ public class LevelLabel extends GameObject { /** * Create a label for the level with default values. + * * @param gameView the {@link GameView} to display the level label */ public LevelLabel(GameView gameView){ @@ -23,7 +24,7 @@ public class LevelLabel extends GameObject { width = 101; height = 8; level = 1; - getPosition().setTo(GameView.WIDTH/2 - (width/2),GameView.HEIGHT-height-60); + getPosition().setTo(GameView.WIDTH/2.0 - (width/2.0),GameView.HEIGHT-height-60); } /** @@ -35,7 +36,8 @@ public class LevelLabel extends GameObject { } /** - * Set the current level number + * Set the current level number. + * * @param level the level number */ public void setLevel(int level) { 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 0d47cfd..b3d36bf 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java @@ -15,6 +15,7 @@ public class LevelProgressBar extends GameObject { /** * Create a progress bar with default values. + * * @param gameView the {@link GameView} to display the progress bar */ public LevelProgressBar(GameView gameView){ @@ -23,7 +24,7 @@ public class LevelProgressBar extends GameObject { width = 101; height = 8; levelProgress = 0; - getPosition().setTo(GameView.WIDTH/2 - (width/2),GameView.HEIGHT-(height*size)); + getPosition().setTo(GameView.WIDTH/2.0 - (width/2.0),GameView.HEIGHT-(height*size)); } /** @@ -46,6 +47,7 @@ public class LevelProgressBar extends GameObject { /** * Set the progress of the level. + * * @param levelProgress the progress */ public void setLevelProgress(int levelProgress){ @@ -53,7 +55,8 @@ public class LevelProgressBar extends GameObject { } /** - * Create the middle part of the level progress bar + * Create the middle part of the level progress bar. + * * @param progress the progress to display * @return the pixel art representing the middle part of the progress bar */ 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 d9ad24b..46e2fd1 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java @@ -47,6 +47,7 @@ public class LivesLabel extends GameObject { /** * Set the current life count. + * * @param lifeCount the lives */ public void setLifeCount(int lifeCount) { 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 a79076a..f6563b0 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/ScoreLabel.java @@ -15,6 +15,7 @@ public class ScoreLabel extends GameObject { /** * Create a label for the score with default values. + * * @param gameView the {@link GameView} to display the score label */ public ScoreLabel(GameView gameView) { @@ -33,7 +34,8 @@ public class ScoreLabel extends GameObject { } /** - * Set the game score + * Set the game score. + * * @param score the score */ public void setScore(int score) { diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall.java deleted file mode 100644 index 123741e..0000000 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall.java +++ /dev/null @@ -1,79 +0,0 @@ -package de.thdeg.greiner.superpangworld.graphics.moveable; - -import de.thdeg.greiner.superpangworld.gameview.GameView; -import de.thdeg.greiner.superpangworld.graphics.base.GameObject; -import de.thdeg.greiner.superpangworld.graphics.base.MovingGameObject; -import de.thdeg.greiner.superpangworld.graphics.base.Position; - -import java.awt.*; - -/** This ball follows another ball. */ -public class FollowerBall extends GameObject implements MovingGameObject { - - private enum Status {FOLLOW, CENTER, HIDE} - - private final RandomBall followMe; - private Position targetPosition; - private Status status; - - /** - * Creates the GameObject with the GameView to be displayed on. - * - * @param gameView Window to show the GameObject on. - * @param followMe The RandomBall to follow. - */ - public FollowerBall(GameView gameView, RandomBall followMe) { - super(gameView); - this.status = Status.CENTER; - this.followMe = followMe; - this.position = new Position(GameView.WIDTH, GameView.HEIGHT); - this.size = 50; - this.speedInPixel = 2; - - } - - @Override - public void updatePosition() { - if (gameView.timerExpired("Status", "FollowerBall")) { - gameView.setTimer("Status", "FollowerBall", 3000); - switch (status) { - case HIDE: - status = Status.CENTER; - break; - case CENTER: - status = Status.FOLLOW; - break; - case FOLLOW: - status = Status.HIDE; - break; - } - } - if (status == Status.FOLLOW) { - targetPosition = followMe.getPosition().clone(); - targetPosition.y += 25; - } else if (status == Status.CENTER) { - targetPosition = new Position(GameView.WIDTH / 2d, GameView.HEIGHT / 2d); - } - if (status != Status.HIDE) { - double distance = position.distance(targetPosition); - if (distance >= speedInPixel) { - position.right((targetPosition.x - position.x) / distance * speedInPixel); - position.down((targetPosition.y - position.y) / distance * speedInPixel); - } - } - } - - @Override - protected void updateStatus() { - - } - - @Override - public void addToCanvas() { - if (status == Status.HIDE) { - gameView.addOvalToCanvas(position.x, position.y, size, size, 2, true, Color.WHITE); - } else { - gameView.addOvalToCanvas(position.x, position.y, size, size, 2, true, Color.GREEN); - } - } -} 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 5d56aa1..f622399 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Harpoon.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Harpoon.java @@ -5,6 +5,7 @@ import de.thdeg.greiner.superpangworld.graphics.base.*; import java.awt.*; import java.util.ArrayList; +import java.util.UUID; /** * A harpoon which can be fired upwards by the player. @@ -17,9 +18,11 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { " kkkkk \n"+ "k kkk k\n"+ "k kkk k\n"; + private boolean stuckAtRoof; + private final long harpoonID; /** - * Create a harpoon with default values + * Create a harpoon with default values. * * @param gameView the {@link GameView} to display the bubble * @param objectsToCollideWith the list of {@link CollidableGameObject} the harpoon can collide with @@ -32,14 +35,17 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { height = (int) (5 * size); rotation = 0; getPosition().setTo(300,300); - this.hitBox.width = (int) (width); - this.hitBox.height = (int) (height); + this.hitBox.width = width; + this.hitBox.height = (int) (440 - position.y); + stuckAtRoof = false; + harpoonID = UUID.randomUUID().getLeastSignificantBits(); } @Override protected void updateHitBoxPosition() { hitBox.x = (int) (position.x); hitBox.y = (int) (position.y); + hitBox.height = (int) (440 - position.y); } @Override @@ -56,6 +62,7 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { @Override public void addToCanvas(){ gameView.addBlockImageToCanvas(HARPOON, getPosition().x, getPosition().y,size, rotation); + gameView.addRectangleToCanvas(position.x + (width/2.0) - 2,position.y + height, 4,440 - position.y,1,true,Color.lightGray); } /** @@ -63,7 +70,12 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { */ @Override public void updatePosition(){ - getPosition().up(speedInPixel); + if(position.y > 8){ + getPosition().up(Math.min(speedInPixel, position.y-8)); + }else if(!stuckAtRoof){ + stuckAtRoof = true; + gameView.setTimer("stuckAtRoof"+harpoonID,"harpoon"+harpoonID,1000); + } } /** @@ -71,7 +83,7 @@ public class Harpoon extends CollidingGameObject implements MovingGameObject { */ @Override public void updateStatus() { - if(position.y <=0 ){ + if(stuckAtRoof && gameView.timerExpired("stuckAtRoof"+harpoonID,"harpoon"+harpoonID)){ gamePlayManager.destroy(this); } } 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 2a508d1..50257b1 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.java @@ -4,9 +4,7 @@ import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.Bubble; import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; -import java.awt.*; import java.util.ArrayList; -import java.util.Random; /** * The rare hexagonal bubble. @@ -28,8 +26,8 @@ public class HexagonalBubble extends Bubble { width = (int) (128 * size); height = (int) (128 * size); - this.hitBox.width = (int)(width-20); - this.hitBox.height = (int)(height-20); + this.hitBox.width = width-20; + this.hitBox.height = height-20; } @Override 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 e16d699..e8e5a86 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java @@ -9,53 +9,43 @@ import java.util.Objects; /** * The game character controlled by the player. */ -public class PlayerObject extends CollidableGameObject { +public class PlayerObject extends CollidableGameObject implements Cloneable { /** Flag, if the player is shooting */ private boolean shooting; - /** Debug flag, to display X and O or the real image */ - private static final boolean SHOW_X = false; - /** The pixel art of the character */ - private static final String SPIELFIGUR = - " kkk \n"+ - " BBBBk \n"+ - " BBBBBB \n"+ - " BBBBBBBB \n"+ - " BBBBBBB \n"+ - " BBBBBBB \n"+ - "kBBBBBBB \n"+ - "kkBBBBBB \n"+ - "kkBBBBBBkkk\n"+ - "kkBBBBBkkkk\n"+ - " BBBBBBkk \n"+ - " BBBBBBBk \n"+ - " kBBBBBBk \n"+ - " BBBBBkb \n"+ - " bbbk kbb \n"+ - " BBBb kBBb\n"+ - " BBBk kkkB"; + + private boolean movingRight; + private boolean movingLeft; + + private boolean movingStanding; /** - * Create the game character with default values + * Create the game character with default values. + * * @param gameView the {@link GameView} to display the character */ public PlayerObject(GameView gameView){ super(gameView); - position.setTo(GameView.WIDTH/2, GameView.HEIGHT/1.5); + position.setTo(GameView.WIDTH/2.0, 360); shooting = false; - size = 3; - width = (int) size * 11; - height = (int) size * 17; - speedInPixel = 5; + size = 2; + width = (int) (26 * size); + height = (int) (41 * size); + speedInPixel = 2; - this.hitBox.width = (int) (width - (2*size)); - this.hitBox.height = (int) (height - (1*size)); + this.hitBox.width = width; + this.hitBox.height = height; + + movingRight = false; + movingLeft = false; + + movingStanding = true; } @Override protected void updateHitBoxPosition() { - hitBox.x = (int) (position.x + (1*size)); - hitBox.y = (int) (position.y + (1*size)); + hitBox.x = (int) (position.x ); + hitBox.y = (int) (position.y); } @Override @@ -65,39 +55,66 @@ public class PlayerObject extends CollidableGameObject { @Override public void addToCanvas(){ - if(SHOW_X) { - gameView.addTextToCanvas(shooting ? "O" : "X", position.x, position.y, 50, Color.RED, rotation); - }else{ - gameView.addBlockImageToCanvas(SPIELFIGUR, position.x, position.y, size, rotation); + if(!gameView.timerExpired("shootHarpoon","PlayerObject")){ + gameView.addImageToCanvas("behind.png",position.x,position.y,2,0); + return; } - shooting = false; + + if(gameView.timerExpired("movingStanding","PlayerObject")){ + movingStanding = !movingStanding; + gameView.setTimer("movingStanding","PlayerObject",100); + } + if(movingLeft && !movingRight){ + if(movingStanding){ + gameView.addImageToCanvas("left_standing.png",position.x,position.y,2,0); + }else{ + gameView.addImageToCanvas("left_walking.png",position.x,position.y,2,0); + } + }else if(movingRight && !movingLeft){ + if(movingStanding){ + gameView.addImageToCanvas("right_standing.png",position.x,position.y,2,0); + }else{ + gameView.addImageToCanvas("right_walking.png",position.x,position.y,2,0); + } + }else{ + gameView.addImageToCanvas("behind.png",position.x,position.y,2,0); + movingStanding = true; + } + movingLeft = false; + movingRight = false; } @Override public void updateStatus() { - } - /** Moves the character to the left */ + /** + * Moves the character to the left + */ public void left(){ - position.left(speedInPixel); + + if(gameView.timerExpired("shootHarpoon","PlayerObject") && position.x>8) { + position.left(Math.min(speedInPixel, position.x-8)); + movingLeft = true; + } } - /** Moves the character to the right */ + /** + * Moves the character to the right + */ public void right(){ - position.right(speedInPixel); + if(gameView.timerExpired("shootHarpoon","PlayerObject") && position.x < GameView.WIDTH - width - 8){ + position.right(Math.min(speedInPixel, (GameView.WIDTH-position.x))); + movingRight = true; + } } - /** Moves the character upwards */ - public void up(){ - position.up(speedInPixel); - } - /** Moves the character downwards */ - public void down(){ - position.down(speedInPixel); - } - /** Lets the character shoot */ + /** + * Lets the character shoot + */ public void shoot(){ - shooting = true; - gamePlayManager.shootHarpoon(this.position); + if(gamePlayManager.shootHarpoon(this.position)){ + shooting = true; + gameView.setTimer("shootHarpoon","PlayerObject", 100); + } } @Override @@ -118,4 +135,5 @@ public class PlayerObject extends CollidableGameObject { public int hashCode() { return Objects.hash(super.hashCode(), shooting); } + } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java deleted file mode 100644 index 2763dd1..0000000 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java +++ /dev/null @@ -1,74 +0,0 @@ -package de.thdeg.greiner.superpangworld.graphics.moveable; - -import de.thdeg.greiner.superpangworld.gameview.GameView; -import de.thdeg.greiner.superpangworld.graphics.base.GameObject; -import de.thdeg.greiner.superpangworld.graphics.base.MovementPatterns; -import de.thdeg.greiner.superpangworld.graphics.base.MovingGameObject; -import de.thdeg.greiner.superpangworld.graphics.base.Position; - -import java.awt.*; -import java.util.*; -import java.util.List; - -/** Ball with random movement. */ -public class RandomBall extends GameObject implements MovingGameObject { - private final Random random; - private ArrayList movementPattern; - private int movementPatternIndex; - private Position targetPosition; - private MovementPatterns movementPatterns; - - - /** - * Creates the GameObject with the GameView to be displayed on. - * - * @param gameView Window to show the GameObject on. - */ - public RandomBall(GameView gameView) { - super(gameView); - this.random = new Random(); - this.size = 50; - this.speedInPixel = 4; - - movementPatterns = new MovementPatterns(); - - movementPattern = movementPatterns.getPattern("Centered"); - movementPatternIndex = 0; - targetPosition = movementPattern.get(0); - } - - @Override - public void updatePosition() { - double distance = position.distance(targetPosition); - if (distance >= speedInPixel) { - position.right((targetPosition.x - position.x) / distance * speedInPixel); - position.down((targetPosition.y - position.y) / distance * speedInPixel); - } else { - if(movementPatternIndex < movementPattern.size()-1){ - movementPatternIndex++; - }else{ - movementPattern = movementPatterns.getPattern("Centered"); - movementPatternIndex = 0; - } - targetPosition = movementPattern.get(movementPatternIndex); - } - } - - - @Override - protected void updateStatus() { - - } - - /** Set position to aim at */ - public void setRandomTargetPosition() { - targetPosition.x = random.nextInt(GameView.WIDTH); - targetPosition.y = random.nextInt(GameView.HEIGHT); - } - - @Override - public void addToCanvas() { - gameView.addOvalToCanvas(position.x, position.y, size, size, 2, true, Color.YELLOW); - gameView.addOvalToCanvas(targetPosition.x, targetPosition.y, size, size, 2, false, Color.WHITE); - } -} 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 3df5c76..c636cd1 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java @@ -5,9 +5,7 @@ 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.Random; /** 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 28dc425..1ac303d 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java @@ -4,9 +4,7 @@ import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.Bubble; import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; -import java.awt.*; import java.util.ArrayList; -import java.util.Random; /** * The green bubble with special abilities. @@ -27,8 +25,6 @@ public class SpecialBubble extends Bubble { " GGGGGWWG \n"+ " GGGWWG \n"+ " GGGG \n"; - /** Flag if the time is stopped or all bubbles are popped when this bubble gets popped. */ - private Status status; /** * Create a special bubble with default values. @@ -39,8 +35,6 @@ public class SpecialBubble extends Bubble { public SpecialBubble(GameView gameView, ArrayList objectsToCollideWith) { super(gameView,objectsToCollideWith); - status = Status.FREEZE; - this.hitBox.width = width-20; this.hitBox.height = height-20; } @@ -57,29 +51,5 @@ public class SpecialBubble extends Bubble { } @Override - public void updateStatus() { - - } - - /** - * Switches the active effect. - */ - private void switchEffect(){ - - } - - /** - * Activates the current effect. - */ - private void activateEffect(){ - - } - - /** - * Enumeration to decide if when the bubble is popped the time is stopped or all bubbles are popped. - */ - private enum Status{ - FREEZE, - POP - } + public void updateStatus() {} } diff --git a/SuperPangWorld/src/resources/behind.png b/SuperPangWorld/src/resources/behind.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3c8f82f1ee872c3a506a467b6a53163e4f5e55 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T9!3-p2s!sj~QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`MFV_7ToV%$m6v?^|NsBndR_Sgw;43H0%fWXl`aBO>?J{d!9Xb>V36`= zb^{7=7I;J!GcfQS0%1l`4X*~E;4V)W#}Etuqmxha9ai9B?bZDAU;X;&&AqEdzFyne zkUmMH+iAA~YxTqVnHFZVN)Aa+H;HOu=I^|Dy>Q9PXOkv*RhCTX%wKsw$#(jjE#F@+ zP>;KC=u}E;_|~IyJYQRNs6;iIM%|iluF!F(qsQ`E5sMGDC;tRDF)JB4GMY|Yz!W-9 zL1^;4U)>p+_of&upY0R;LRw|6^A)qnzK2w=E?6llom=Z?=C#Rw-M^i4G)}osn#s{0 irI{w9w4g1&0O(Mlj>UQ>Nt%|2}b7 z%R%^1i9ehi3Gz%RLVKJX81_FpBj*Xz3RcQ=!yIlFn6X|!;J|u|&F(@7I~*Ds7{2i$ zS?bVmK%0f-gZ8;M6Hy#fAbsHZ`NAY6R1^Khcl@3i&-mvH_pN@Yt04*|H8A-3v?2S( zAtBa*VSW6Ce<;RIU|}gpGIBw2_iHAmioZ?Y)RC=fR8eRUo~(!xKoQ~s2VRSBu}29C z6-LH6Gk64%eRyD314G>Y1%Ek_y{W*-@!&{G2a2Pwv9f&l#roDC#WkJ|4C-pmD30Es zr_gX+KcgPSH6Bb%7KV~2;nP^k$hfD@@wYItYaE0G4s@OrKymaMZjJ|Exo^!!am{ED z0u#V!5JJ+u7ZXs+vb@WN-szv{3_Ul8v?t!41>V zrZuRIJ=(Me_cTU(C!oI7Xa^76!yN4+gL?R*!wleYj?rO;(P0Mo=+@{k!{{&rY*ce} zm|=970X`r-I?OOS%mAMj869RA9cF+}&W#Q;j1Duv=Ql@(8L$sCh|SaiE)w863t9^R zR59Aj9&Kii)%IXb<0qlo7u<3j3H5qjoOT&Q; z4GeO2^RA*SCs_bo!I76b3Eo}?G1`F3Nj`jB;|Fgyff&F=Fy-2l;T>)e!$3!&p}jx7 z6qX{u1GX=in07?ZRDoBsph1d6Mn;<&o7JexNq~!B?w(Qs>wy)+JV3`hd>lC!#Wlc1 zFz>?DP#m2Q;lRKzfBqGUYc8;|6l^y_T}gBpxFY9AMHuRe9N;3D-BUeL94#RxaNzLq z%~mL`DPd&1v(^V?&CzHOLMHM@gAg>4Kbi_bslj11BafDauo8O+R3``YE1l<9&RuF~ R16=FM;OXk;vd$@?2>@UwDk}g0 literal 0 HcmV?d00001 diff --git a/SuperPangWorld/src/resources/icon.png b/SuperPangWorld/src/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a972974ae44eed7aa2f0e9fdf8d6ee1d972f8f GIT binary patch literal 448 zcmV;x0YCnUP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0aZyvK~zXfy_COB z0znYQ_jm-aw4tD}v9LBVBv#ZU^j8=k!4eAz&tP#qiJ_#TA>j$2ATbtNSmG<7v&`VK zw==VQT=*qq=Ke6>&g{3B?fx){v=<+k8S{D9!AvG7^m=<~9+uyS2)M;LB+(Ye3LxUf z7^KBigxoHO6fus<=%^@-j$`z)z^qDWgsd4zq<^2=2)xa=nC*dQH{B^-{gWgF{0y%# z(*eP+$9J3WHa#0%qJ{G3wV_v~1>}>ljlLM`y1Hx!Pc~*(Gy5Z0A%E3E<40T!SGF6! zBX)Et`$K>T2iuYKr#dvYN7}+f*8$oH!DS&k`=~<1k=4<{M5984Ygr;%s3;1&OrtDI z%ydpNL#R8BlU)}p7ThBmr9T=fN}n09G~BCg2G?Qk`GBG%0;C*jade?VzO`c!JMx93 q{m{l2eU7wE*Mu7T)@htc$e3TPaIs^qGs_160000Nn{1`B?5dxT;&hko@p)hwqBP(V=GYX|NsAqiHSf)81wlaAjMG<M!rJ|JS+iAjQ;)a-@DD-xNn{1`B?5dxT;&hko@p)hwqBP(V=GYX|NsAqiHSf)81wlaAjMG<K)%BYJj?-Htnca{TNZjO*pMmz zb&2SowrSf|)}NK0a%s!+Plw#A+_cqIPWb3sv_$l;khs{?%u;+Vsd6!&r03EM(~Gg% zx|jP{n59ncvsxH&^6)E@WBi+ro$PJ)o+Dy-bE3hu=37E{8c({Z<}5b&7oPoN)zSwO zr|c7IJKV2WBzc_8bK!E6D65Cj>HRO4|2C@ZKPJ5G?))WhC$8bSt#Rh0w9XExC#=&y z?QyIS-MoTzYoyhI4*kix!e2~o-;_A5IrX0X3@Nduko(s`Vaed>>gTe~DWM4fnPre= literal 0 HcmV?d00001 diff --git a/SuperPangWorld/src/resources/right_standing.png b/SuperPangWorld/src/resources/right_standing.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c227387a63cd27312e39058ac65898f2da37b9 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T9!3-p2s!sj~QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`B?5dxT;&hko@p)hwqBP(W9$F_AU%nRi9j+fWY;Mm#ZeOE7Yq~!0fu|c zdn18joCO|{#S9F5hd`K7RKu$QD0srt#WBRff9b_Qp=JXPmJ1r0JOB6Y-oVl+_4{Gj zu^F{#Ub&Z3?*(NqKc3V*FYxY%#N*j+=0|pO@4PU_>uu4pyRT}GKN3*6bfLGRU!v3H z=5O}!rin{pIK#PC+;)0czSMBdyAI!=tr?R{(mQKa{iLiNn{1`B?5dxT;&hko@p)hwqBP(W9$F_AU%nRi9j+fWY;Mm#ZeOE7Yq~!0fu|c zdn18joCO|{#S9F5hd`K7RKu$QD0tP=#WBRff9b_Wu4V@w<_njte*drEW8!=M-W-Dn zHo3FGFG_wS|668w?RS>b{KESml8?StJ#4OG9VZ=_;kkBM%_X_7`yMB#8%e*=TH}(Y z)&ICvyD=sBU5hen$q~cOg&~`MxvlEjwQ}Z@V)3(ci-LVmcx`-hM&(Vd-b@z5Qm?=h z$~zyr&XAP|aG&%+py{s;|1|A~n)7tBd+*G>Z6EkMy*_Bqja#~(m0t#F2Ho@xxjOg4 ziYzv(^WL|7C!3slG+Tv{m7`<+Y7bN4Vv&uSM=aY7z2N^tF L{an^LB{Ts5LG726 literal 0 HcmV?d00001 diff --git a/out/artifacts/Programmieren_2_jar/Programmieren 2.jar b/out/artifacts/Programmieren_2_jar/Programmieren 2.jar index 34c2ca451bfc7a82f22ca3b7e85e030556b7df46..175bd2b644fb85ba8ec9caddcb64656967907b23 100644 GIT binary patch delta 34904 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 X|6+~|jp2aPgZ%AM!@*&kLaF~3Z>4b; delta 34951 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 Gg!(@e6&7It 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 da31a6c98ebbaa91867fb03fc5a91c62d943f8f9..a211af4b7beea1b161def0abc2db87327d58b4a7 100644 GIT binary patch delta 18 Zcmcb>e~y2{JVsWI%;fyM%}W`z*#JU=2220| delta 20 bcmX@de}R9)JVth|ki??&)RN7M8MWB}P>=@< diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.class index e0eb6e150ac46e35ced98408f85e7e74ab0b0ad0..d60649670ea726c20d5f99b981e1ca7fe8fd7c09 100644 GIT binary patch literal 4868 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 literal 7096 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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 c3f277f102b9defdc13a573269e1ad903421f98a..17437a996919a755d7e34e86424f999f71bb2829 100644 GIT binary patch delta 120 zcmbO#G(~7bKMOx!K~ZXPacYWFX-P?bUh(GnEOAVnLJZstJPZsBLX+9peR!oASQum& zI2mLa_!#6S$FuJ)1Pxj-eWmKJfhQkv84lx%B delta 121 zcmbOtG*xIrKZ^i=dTL5hX=-*!YDi*nNowBac`R{EoJVbEfTX3%DcW6)(tWzb{DU@&0F YW-w;R0m>IKm`(QOsAW`{e44`(03=@*9{>OV 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 4f4c3d61d30d4d30e07502684590e60f75d2aedd..7c31dc8825b4871559dec9a5373c51dc4f7113fc 100644 GIT binary patch literal 4870 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 EKl`nmGynhq 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 90a61c2f7c97392a07dfbe3e01181a97f40b5f5f..1548b34edac846cf020e97fcce200c7047d20f11 100644 GIT binary patch delta 145 zcmZ1}y;6EZ8Yiy`0}F#H11EzTgBXMQ;2J6YsINeyC8CV%y zCL40OG5Sod;0odlW8h^7XOLoun0%QlPc(*si6M@Giy@vtlp&Epf+2xHk|Akw824$} wbf8HYK#@!aS%xeIV}@)7M}{1RREAuJ0*0)~c03ChizeUa@n9^Utijs|0H>E6{r~^~ delta 145 zcmZ1}y;6EZ8YizZ0}F!+11EzjgBXL_INews8CV&d zCL40OF?vp};0odlX5eKAVUS`7oqU-qPc)K&i6NSSiy?+Vlp&5mf+3bck|BO_824$} v6rf3|K#?>CS%!25V}=X{M}|zGNESl@L;7Spo&}8glkf9*FqTZ#;B5o|mhT+4 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns$1.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns$1.class deleted file mode 100644 index 9f0d8dd5847e426305d1d187808d5bb86b992ad3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1367 zcmbtUS#Q%o5dJntow!aLN?UFy5ZYX=8y+~6DgqJ^L20Q}l=qFZN?bYK$X*xmpLjvy z5)X)HeiUNtgbLgzmz8E`cQo_Ou`~Pg*SGHg9;1;*3TX`)16eFEJQ)g8jfY}njyz$z z!ZZC~D!eIoM{lL)3`xwVW83o00r!QuFHgioxayEAB|O(JH5eAu*!D}igw^{$u%?b2 z@)~pli!d09$NYqw4uxXA9vllxk*_`5wN;BDU9R-=Si-V~qJaxoVR(?t`=Ru0WlNWV zy(8-ASjC!#bpw}h`5)&U84Mi3pjmP<WqV6G7#Py9+hIHCoS&uxo3y> zxiAwp0>iU}8O1%98cl|jq|SPj5b3n0q5XY^t#U8kLd~<1N|zyjWRF~~g79$%XH{mB zSdsV68(oX?(~o4}S>lBqHr86a1Uq5aRQKnu_X z1Zgwc@8UM?>oYCfp?kRW2#uyJ9F{rOD`X;cqxKPnI?-2Ld{4T6qisfL8#BFAGy^5v zi@X`wq*JQ+lyJA^xDQD?jJi;*{lHS4=rgXwfoEYF5lCSUoJBcuUqLnEHPne`u#G&- PNV1Jx;yPJ{MWFQ?)x&Lb diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.class deleted file mode 100644 index 54f5e9bb98e4726c9c3311088c5ebb3a3271526c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4244 zcmb_f>w6qk8ULMJcDCD*F6k!e7AOT%$fks)BA2o?Y)C8(Zko{4v?*Gd?4E9>o$M?# zvuP6_TSP!n@eXLbU-2#|O-d_R^_!3X0N?5-Kl#niJpRti>}1l$+E6!nX5Mqodw%cz zJ!k&*?)kR??8aYHXhExnHXZFq2&9i2b4K1WYSsMM^l@4C1QL79n&}M)wD#sEH6#UY z^qCr-Y327B?#!rBPeDWL25f|`;e9%8z$Sr#ip+a66C}mR(sry0 zr;YlIS$6Z&hAZ=<_MDuRHE-PTJn7V2fn+@*HJX}{CRMEjGKG?=m~nyP zH6yK=;XS)j7{dV-tO3PvB#$ z=6Zv^dN53pcuxJ-EQ>QGag?wNW_7`+Ch;VlzaSkuiD}Lr-fKFpmqdm1R7f9VJrA+G zr6Vg!jTs##j#G`Qq#Adup+*?+xKOpx(lLt~k>?DnAz2`or$&_K8&Sto8XO%iC}UNk zHJMb>mF9%;`9ZQ*>WVp7KU&+}GASlH*c07L>}L6zJr{l|It&DS=)8Gla&h zoHOOg{G%i$NhFG=gHlQq>z8~=wT;i{coxsmWfj)6Q7coy!g}+g*^dgj;S@fL&uMr; zrN-x*UB-9pu-%xpi0=2N5rGX8X4S7e&dtTTN7(20#O$8%9J5v}#F(P?xo4fJ9H}}` z7%0%=Lw1GoH~G9YOXr~BYuQn<%Z4>+IHnqhlWpFN$uuagQ|9I84dr&OWeew3 znjbN$Bu@F+Ox5OB_XL5i*xr?1p*GKldy?fa{T1^nJLc<6TgGB2{||2pjK>gH^tz4! z38YxE;VCVUi&t)#67g0YSwUB5;ej5V#eNEgn*_?&3UyuDr>T8#{6{u)uR2`f8n>IZ ziextsERDz4=DIFrbjz5Xt{6Qvd9vpo0rx%E_&Sq6D!3dCYpL(zLGWG?)cy~!X6vIS z`+aJ{Za8JR*HlfV^YR+ITb=a+8~01s8 z2>o|H#k=?g9Y4dXX}rqY)JTmN@FB}^UFmB06K|7Ocyul2X!x_hwyU$U#RZxqcpAD=_dGWtpiE}e+s^=FWe-5nxbE4U|R7dK9BO217sMcPKK`wTd{>#o~?KXH{&0;1^>i0{0q0@-`I|K zahpit{UXEfmTl-0JJ2ukxLfSTy$BJFSLt0XvO!r9+bcjNc|8$B9B6yrZx(-kEoj!@)AzG30p9vjXf&x;T+TBrX|d; zlBqt}fe}XOv6$SxP;Q1%`!RkJ$^B_MrJ4Z8O72mXUMt@>2g!OmgQuD7qkYVpXLhQ` zIXwSst_RiylJYF&dwfaTgT44UenB3h;FqKX*KfeDNVPC;g5AHtZ@I3DeGI=NrIUJ% ZyO;4M{)o3Y(?RYrzSZw-T*P0H{STTtpCkYP 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 4fd40daa1b526b50fb97d9d3da12b95cb9e238ed..8209f1e212d6511da5f7f67618a4e816101c2891 100644 GIT binary patch delta 697 zcmZ8fOKTHh6g}T0lbKAul#--rG;NdgVJ4ZjsivB=YMX{&v?RLdQ-nZmAr!Qd))XHL zt0H8hs2363Yc>T7EgD5Z+`AOPo&Q3_g?G$G9GLH(d+y_$`IztF=i$fCg039ej{!dd z8oDHc=zj7sHsQx1iNgpBIJat>*EyJlM8R(BmFPo6K;67n-&kuGW_`RSCee=p>J}N- zki-$hXjg+Rj{C>(!0=RRcQC*@CkIlV*Z;lW^J<1smbnQ1)JN1Q&Za5p z&Z|X6XQ}2csplD8pwG-LF8nyTMfWYS6c|Z z<||V$&!>wG0$1pZk-gK?uv=T`X}m`i*!!=kh6QHi-+>?&vBa6MKb_Ax#&wPkj-8^E ze2c+P&`V7?%hn$A3On+`r0soE$m1h@VI_d?gMMf}DADGtnh=bU@)H|M+D=Yj8mwRPPE2lgpQ zcm$-L$wbHPLogo~{MfIdLE!)nK7AGL_2ZDjVKfTZ=4a;?xagT^#;}DH!Z^Ym=4KWv zMRQ@)!)=-sB4{BgdURbOiWqwe(=(NlfLD)Zr}9hr)O5a5PK{lgDis#`HMCJt#O+Ci z6xwNBG`Ty_si8}u8^`FYXmxZTt-0~pkBT;T+UC~Qg74a>QZAEy*XjF|TM z>*dPgO=HH>#@|N;`t&H>x1_hd)=i6uY=4%MLaPU-f``IdF(YATmgDH%tO>4KthROs zb#ED3aDl%ru0SIjgSf~@nKq2$5;K9z)aYoS4b3Yf>}{bjhmXE#37KG)q~BUrb}{N^ zeOL}K8e}axrKj=q4ejdPjVm}xd{Ykkcf%x)go7(al9hiJefzLAe<*F6#H$z8FT pn|g9p^cx%Y&b&$m)h_DjnF`4#9Ak|>s;HH(B>hlBoT8;>_76MNg((04 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/Player.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/Player.class index 16f617864967ffb5f085939bd83ecf3bcf827d2d..1b4a58fed521e385415460ea55600b89ef79d58b 100644 GIT binary patch delta 192 zcmXYr%?*M;6okKBQNxPAAmV?xt`&H<2)nTcLIKv`ftYxp0I!x{4<3yJF`K-3-(==x z-@zwv&+nrKj_eCpx{yB8h#7HFpNeZT5uSyF8SG1Bp0m2TP4Wg$Nkot3rH z#NRQ#R}uP7#n2xrCO7$(rDm!|GXwQP^+s}IR(g%w_E~3aggVuHOXm$+k!AM-R?-uk delta 179 zcmXYpyA8rX5JcY{2a?UlV6gc|B*+;dBuF$sNv`2^4UiHNSV#mEKpR9fK!_MDG}6qz z(eA$8)5VX^?G9{N`Z)O4%AXH*w+^M*guOYHeL5Hh+OVXW+G3Q+KZlHJHZ;l9=c1!_ utuiUDn4(n?6^)ASMU`bNPjT{0o)f9*F_93}XH1!i^nm2|-$-+zW$^_#ArqVc diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.class deleted file mode 100644 index cec55689974f1f836337b73fca8d7142ea1d6837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1047 zcmbVL%Wl(95Iy6#bz>Yil<5-oG`zsVwG1@$cvO)^Uj8hJX6!zJTJQ~?$6v$iqw~{RXNPo)J8lm zS>qnBnFhjjejqj0{4QADWXokutmoFggTC-Z!!4HOXTZd5mewc$cW{?2DmRs7ncRcU zaDcu36~+di;0GF?KC@>M#ja46N0DO`&cQO%Dy!I7;hWa%GV=W~@^g+ZksE94zp=2v Y=Nm3f15eUxjDa;gsLDUYqe`#-1Kh+9Y5)KL 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 b08bca86c9b665f7213a41e66c459b8b41ee85bf..375e032d1d66112711c28cc8e2f9cdfd33550030 100644 GIT binary patch delta 69 zcmaFJ@sMM~RAxaz237_k20jL1AQWMcU=W?Wj5(22l0lw9YBCRtg{&-t9s>gd4+A5R RWMt51FaXmgK$3~U6aaL82iX7s delta 69 zcmaFJ@sMM~RAxb8237_U20jK+24My<1_=hq$;+4%S!EgI8RRDOuvo|{Gw3leFz_%i S0!c;&eFg(CZ2}~j7)$|p!3XmI 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 new file mode 100644 index 0000000000000000000000000000000000000000..e740aa4bcaf19dc7c2d1dcba8800f944c459b3a9 GIT binary patch literal 1113 zcma)5S#R1v5dM}MXA3E$Nl1@0Jvmz3GipVYm!L$IP+AGZTOSs@H5-9#*@m?JSCx`f z>O+4(e^k|313^6`iiPbNd%k04{Nv}h?*Lw7*FX&MG!h(1q!?aV(hLWdv`yQW%8|Yq zj6Lal!m&?Xe`rx!cmvfB%$^9Oc_c>iZSO?(Lx$9za#Xm_uv=~|MWMQhlBW?smu?!B zZWbA2(=a$zz!~M-f$}C&?jt$jOPX_RIWpwmdlw#MW)`(DjNoJ$fvQ& zaTNvf_1}tqgJDPpGVHi?EjOD}pKBb~u+ESO)MpaQn%ev(M@c6$z8eZHT_>+|+`vsr z+GI<2isAWkKYz71gKdWF2i=>x=h#_tw!?8p)3J{_y2o)piar^5h;kYgjw)&lPnWv> zlZ;_iSk{}7uw}H@gB|_Pz{*Q^nXuD&- zFAtR#lhex{ZC718!46F)MjsIn2hA2KIzOW5J>BbksapFARy{*Hm%G4~YW^I>YVI5x zU+7^BkLkQluY#5*2izu>t->wM zbruD5xl2)z{u>u~uwc}myT;naR>Z=m^)nXQtxN10y{EC+qF6fwm1=p@LUvjBf^spu F`~^K&5&i%G literal 0 HcmV?d00001 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.class index 354562442391f90cc70e5e69277e4f39ac34f8c6..b04b44ad70a2fc8283f16f8055edecfa8677005d 100644 GIT binary patch delta 600 zcmZ9IOHUI~7>1v7uxDgEj;OU-DPp-PLn{{%gJ7+4SG*$%UZP2xZU`haF}jf@i5p|i z-v2#CsFd4VqCzd zhhC39%Ox%=#=gGIx(#*4X`M8oWq_Q^=oxdxGRTmt=+U7bMl4qe6zW5(+`eWRi`7R{ zoNl@ivc;r{dbA`89eqUa@s1$Z# zeZ9Onwf3%BEmu8OU0WhluiQjp?)a4Wf5t;gEx0d<>{gP_aF-L?NwOQ2lR6{fbg6B! zv|XorN4hi-(*?N$DH5E;a*k7^Wj{{`?ShzLCjJ_`GRvGO@sEZ_revN4*`w?wj>!r7 zB&J_hYHN=?gmu!p3^&SXlIu0bgF3ek0Q?xan_l^0QJ8JmG{Y2kxz~&+NM{6M!uB7e z{&&d92>C;}n`WQa#B)Wwi~GC-VifVJ10NH=7&%0tniehGmsZUK9!fnbeUD@<^Fov_ KrxjlEn)E*$V@fCh delta 570 zcmYk2OHUI~6vuyeU}j{vjDS$6BD6q3S{_AS0#%EEfEIc9cBM(Xq5)&0krhkW5pwq? zd;|*Vf`uzreg_ghiE^eTz)bEr_i@hu_rJI3|MI=R|4x4clYBbzimKitLe!;G(?z#p z{NQuc{8xQWkEWLgX3&~<;+h2gX4@J~Mi|r#;Vab78tEL?JS?xao%Ecj%2&fU6E2Um zAg0WjHSDA`k9l(3RMnyUWsg^^xU2@6Yi6eUPvo`2&E$UM@)4!bOPiayZ?pL?g+i|2 z@=g&mt9HBBo!Q#j`2N-9gITs0>YfT{4;xEz${gC!od$ItKjF5W&+ax@Z8E)+txsil zOLQDbjYV2wJFdiL=?kH0p^;Yk!`$aC)7)c5PD2$YbV{ZV;w8c-3{+CGiIE~>eu?R8172CYlbAeq0MiwjOPJz03jxCHJ1skDIj_{m z#c<+=Ip@lpBla7mL$P>eE+Kt^IdzS7${WcWNOdVu#gdd-yx^teTT+*iu`V~P3+Rfs Iyyqj~3&k2r*8l(j 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 3ba71572fe2131a17d87fb6db62258162ae784a3..2057ffe85ae3db96ddb8ef929bbdb31fe2bef10e 100644 GIT binary patch delta 924 zcmYjP$x;(h6g{syybf&>s5S*c7{ZW_>;UVs!30fP)qeIXF!Jml2lT z4vwJ5Gt3FutIR%c+H8~k4vu5M`)m%iM3Hnbgn)opEajw=4o+!r$wnQ{I5>-Q-e0q; zZiE$SKSrsNeq5jmyD)H3b-m<``o=`>*A?Hq2t2Sci#ZDqRc79+mFs1X1Pmekcp@+( z6!LN+_v4v>DOCK0H)U1%mINZ+2U+D!%7C=+TA;q@THd-ThnRIg!hQ=L$_0(qR?hE>D0fM&LAA*={NMG;0Tdieqrr10jjA|#VfXi`(- zpaWC1at3itZ=s9xh*1Cb1VtOruDdy#$znHw+qlDsBDJ5Cs^w)Y^bM8Ur)?eWB5mC} zD3V(g<)r44m#*GrvDqBU6-Q0(a4O-ZLS)80Uy%uAG(}@TDp9~?rM|GrfVv+SKFR@} z8zc!yE1F5)hO{wy?ROM8yqp1r34{qY@W5;f*S)w94w6 zKftpf=8%I2%aaF>9xZ->2Y-O&>q!czsri=v`g`x|*ZtS`+h_gwSNIB`538HjH&Oj& zhY4UIf<_Zj8%<~y=y^Ze@cyS;hO~OoDwA5)h}noEA-A;71MN6!qQgcf^FLbHIBug0 z-O{JeczRWMLZDf8>Q(ZCtIF~ay5GhC2IWV6JQ_jL#xN=b#EOTUqc+BzY}G;?PTDwy z)3V&vQ+Jj-rrkJ4H|EA9UDyi^7ZkxoIqRAdy`Q&SSyA!O!U7geJW`d%vfcPzo)OT5 za3d?QDCDTN5Ow33fG*VHvI?dx0ed2wonIc$%;j?PITJ7Ch8c6c76{3=W=Q@rLrqh- z41p_@M?(wB7?;7Iy~>phc(@8AWx(CAc1Y~RwsEj5lV10so?+EGjb~{gkA_XB{~B!w zChcLO_+g_OUexdl@Zhx=LJ-$k^%qewjT_8}ucRZVzzlAdxZhDzowY%4%Vdl^{{G`+M~-!iwHJ7W6$JhR7AJc7 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 71e16e0657cbb2c6bfa6a6c6a3d9bd67987e4116..0083df5b2bf545d36532487200f5097979c38b9b 100644 GIT binary patch delta 47 wcmZ3_vz}+eX;xM<237|1$ro6iWNjGi85kIN7#M*hBZC8jBbfFCl1vO<0Op_u)c^nh delta 47 wcmZ3_vz}+eX;xNK237{M$ro6iWUU$O85kIN7#M*hBZC8jBbfFCl1vO<0OmOc(f|Me 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 0d6d2bd72e108bf99c597ea371ba8fc5ab6a3fe1..c9ebc61c618922ddd165d0b70f668f20f2fd82c4 100644 GIT binary patch delta 87 zcmZqRY2ev#hecA1ft5j=fr~+cL6AWb$dY1^WsqU8XONxzl_ix`kwKY3X>vTPEvpt# io%ZB~tWL7}4DJjJ3_J{sK$4NcgTWI_`vXZPh5!ITO$$T- delta 87 zcmZqRY2ev#hecA9ft5jwfr~+$L6AWLNJ=uuGDtJnGssN-%96^ez@W^aI60oxmQ@3& iPIK}?Rwr3q26qMq1|9}RAj!z!!Qcs|{edJCLjV9iObayt diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall$1.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall$1.class deleted file mode 100644 index 419e2feb7c399a0a20c6d2484650b34f8f1a8d13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmb_b+iuf96r4>`I|(jLLQ6xq6)oG_1ga{6Lj$=WQk923ZR}Ozvh_y3B!9rK z@C--@A=D4xqY%e#pdj(qTK1luvG?rGIpZHcza0X2jJri-kkyehumFw0c7+vA|?~q%&4mZl4<9J8he`Pt&lo?uKCrE=q(UCxsAz7|gD%B4R zZz_GsT@=YvI?^)vdTDFB^iH_0=+K2r+1Pwt5{|1n29aSx=YW#iX%oFe%jxjy zM~0<*BzoPkf}j|2n4xdGtzxu-NFei1=(vU3r1gsJ+Tkk0NHkS1aa=&czb%@FVdo!A3w^pKhHS-a zSWeCIZBeaPQgN*|RnA@(m%1n1vq^-sX}4VJWS?;He4$1ix6*KW;?^U9;tE#!M0d5w zpqXCBZ}74$v>A$y)|_Y@;<3epaKj5i70(z}|8Jxi^i7wBTs9l0b0^Q{cWs_pW0XD% z%G#KiVt`f}IJwf40hyc_ED{qvg)SRTzRg z<|Sq!qlwn<5iy{U7Z^?c0ISElh?{k#3)QSAx^yX*Pm#i7s(p6qaxZx9JH=-2#7}Vd y7;$M#D$-D;aW5ea?JK5^F(9a3R7UAhdxAyUi(v^*<+@CtXVR3=49j@2miq%p;$|fP diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/FollowerBall.class deleted file mode 100644 index 610dafce6bcb2ebbaacb09125adf88c745662076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 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 delta 958 zcmZ8e$x>566g~YiCrwfnK`jK5AeIoYlmgKN6NR8iNDvfo9*82Ms5qeDK%79`xUe_4 z@C(>T8M1JpxYUpE7u>nDJpGbNQr4^Y`rg~!XL^4^pSHSx{{8Y5Km>2s+|!27g?4On z!HK;RUD&6Vjbv9uA_^%W=JoCY-EDDUC*l$Z&G~|!_vnsuClV5UIILDJ~g)H(}eBqo3AB^0Ne$V1 z>fBU*UE&621dO>^0c&$#3u$f%#49v?o^pmPoe0s70fC!*YjGR1T<(ZP*)EzPtpa}vNU~V{Q{aO1|z2Q^As{r4o3wn3>dg#Bt;?{Xb4Ge`BHoN0xAw zv6!JY9sV$_YLztvVem2U%13xun@N=uDMX&+?;K=l122OFg9w8ZgCc`8gC2t{gAIcmgBOGRWF591PGtsR1{DT1 p2Gz+2*}_>h8RQwXCd;y0FzQbZWB1}TW?*43VGv?4oxGA=1^^S74D=R122OVg9w8RgCc`0gC2uCgAIcMgBOG1WF591PE`hB1~nj5 mpL~!loK+hrt20@a-Gb3@au~Z8rzryqgBgPmgZbo@>@oluIt>;8 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 9451239449711be9125671302d9d91fec692b140..64833a1d8e46db44a3534168418498e37cd5d888 100644 GIT binary patch literal 4518 zcmbtX33nS;75<*B&Cb;ER+G@UN!+H9wG$_H4R(Prwx-g=vPPB0 zO9E}vmeNAo0A*=yN-0Ylmar6J*Oaz|tt>x*U&1+XfbY(XEO|Rl4mxM%&Aactd%t_{ z_uhT_`+wefAHWg(wHg(u48o_ukAT97q!G2#Nh1|a|tfINZ0XKCYWKjhUz@80JT; zb+`&4R0UD3VGA^cW1H$IVw$w34FMA!$mo}hd=XD5XBAA_w6Y5An*%B;a~vG-R>p#; zQ8=(ElGWY>;*T@V`~~9ESDcS(G~&)6nlyX}+ZduvRj!Li!Cx@!A&YG|k#IxyVGVa- zheD{3wk+GsrWDj@AnsTNB&fSI>_&@%uV7v_IGPB=kGjJ$dY^{92vg&XnY7a!?hV8f zSDbMf-lyRsG8{-7W-4uqD5~M3qE9R23?tc_9WZB&j0_yqa6djKb4~k%HLK9rcTu0# zqxy^;Jx`91P8lOsg~PZnh>t7OuN{@aeWL5AhM2guh1sQ3=ZnT4&~QxT)vmnHc*MaJ z*Kl0KHLiG&wvt>{#jtm2NC;dtE6Tg27Z&*`4ZV*1lE@#F9_1nQYdC|m3~0*Zro#Q3 z^Jg^$Vj-N95J^%_>G_;xWkVRGq@1MHxC0Mq7{(_!V4IUh{^V@V%o|CCyDg($ps;-%wF&-O zheJ5-cUgg?C>hf*4gv`Y;{=*Qc%8*-F`X7&k0{h-n41d)FB5_-1oEra5zpwE3A*G; zFOmv*N${%K87gt*Wzz%kT`tUO;vdq$ic(*4}E&Js^L3$jhrf3>CM`Plh5F^ zo|!VvlD19Z-f|q?3?g|Q-wWdVqT>fEbeyoPjG>ciP2thw)XK3 zaAs<9%*YS91ND8@xSko-^QQDYq0dg61RuY3rmPQ$bz&-))NSLGQ#Ojl*U8;5S(7*P zaTYy?VFjn2_uMYs*JWobm2a`^bm_{FxOG=Hya>gpl;>{g$i0KbXndky&v{|fTxTh@ zrx-rJQzBTNSk>#-rk{l&x8hpUaXSofP?j!f#MZcCmw6mx1vxo8Zsg>)R0!hF3iqz! z#~I5WoXX{_ylo_xr*he#HI*MXx=mqEU3qESFA8|?2yq81{0u&}yr=NAt&qa*v@GOK z%gW8RhVytE<@*=x{f*xhY>i0U+fb1k2sUDCBkC5>5UE_i_DCa|7qFAfJsjLQadiQE z*l8_x+T02I*+0N%&jJp4pKS|h7Zpe3)e-S6pz|#U#xMCk%*qGC@uL~_xSO}NoqX>? z8(nEf3p#NxPGb)q;-zU6VO&52Nsfw!CKoV%gS?cz%d%6Uuh6{iww(`z(Hx4+4G*^XZNMR8SkrTB;oGVdNB?S^t@vDSTEhAJ| z!f!aP@J@e9RHWx+1f7L3Cq!=Y=MeQm)riTLUvsh* zq(rusYWd<36-BiyS&$pa^ z2ic0bP~>eqdlMmHS%t$jcSBz;QxsaxBri(d`gzWllcPP-_9pzk>un#PCbEd<+xWZz zf8}*KSHCtdUu{$`8*=+TKCgQl_d3_Q+-{=dz!S{K6>P(kJOrQO;rFy-f0t{+vrlVy zAHO4ly{N-Y9)lGS-qs)xtWj0}Mg#d87r%H*^Kf>PB;w}||9g00q>|o#a|v^UBR&DN zgzpY6;fI2y-1q0oeBa^Pu01XnSWjn^t?2aA;h(GyoL08jU$*%7|Igw-5T9i2b}i$N PTqFVb6Q2(pH~;cK5qwoP literal 4051 zcmbtW`*Rc575=XEw7fAGgd0*?NCH8Y0fkUff`BNtu~BNUiyZT8$x7Nti`H5pt!zl! zG=0)nNYZ!dD}5yCgCE)%>@b~aCqMOv_Fw9B`kmdiv^WOa)1BGfvuE%5&Uel|=id9T z|NiYC0G`92W9U&hQ8qG8wQN)}m8N0Vjb^6RZWzsmUau_JO{+|`-l&?TR%XtgH}s-q zWTq|shS8iVUNuTi0%1gAh-!!-t}wE0w4&ZJGNZO-nPmZ;(B}*fQ6YNFteegWg=bTf zYvR#v-ZU060x(McwqTH=v51t~>f?0N|)aFH-(l8|2Xw@()RVSKDc478w zI3O@ut6>=Be0|!yZdhXUw1$ItMvP2n#J;YOoV=>f>luB)$(&`Ou%0X<8_ju8r1UIy z$M9)|Egu~wKU2L-)=>>v@usee>bQJ8CHm(zdOxZVfWp7ZeDEeZtSld-AicHg@JFw`=BuvN=$<2!zJ|j7cH*H6kj!57UoYrs# zQwrPka(TqEOSSx*UNL6uQN2E|w-mOgyjiq3eVKyOWMyT?cn!@;Eq_+SSrk}PmhpUx*V&fisiC#wy$^7;C6qy1n2VvV!A3)2v)f|s94@c1@rvP$T6&9fyp=w? z16(Bm!f0w}fzui_uC;ZG1Gfc>!2`+;U6i5o8WzBwk5~0pb<{31l2B?WpTMj5LJVKj z@Fl#aFwpgquRDf2y|H=SY8z9WnZZ;($ip8&Ca>cwF?>}pzIGqRh;3Vj&PfYErY`Ht_ z#74Vf)gm4uc%SW5mya4;-q#<>1CJM+hCVKK-6c-*f-7)QY%^UEx52sPaDNR>f?pL} z0UCkh52uobrP^t|;b;BWMheAc***G@Tk^hU>^M!Fyk0UIvTCiGd|-O@|h-J)OiS7O^wUKRa)2?yD~1 zNnakIyqCYzi`d7%8QxFcOyZD?tW|C;;;^sXdvjAqcjT`ws~_;0MuN{_M6eHAu%8F2 z1NbB|)IZG=!9g6yAr$Z_RB#wSAbj_b+31!DK83OOI>FaY-uWd=x>M10G1qj z$H}m8T#e^cz;KzT;(1^>n@5=rG1P<*?|n;{?vhBj!57ennE;N~Au#(eoSBt4=ZJHD zRh$bC!#TGS=Mr%)uZnZ|VK^68;#?ul%d6u2x`Q*y3`l+k(qZY8yZD?WY6*H5%$una zi@eOnGXj7EokVeWB8)WSGkgnRJpBPGA42_wau1|gyuvaA_VJEAw|L+FHb+YZA4w0t zhe-I&@ITR?UP5h{_q&LM?nskgyDic%;ZKw9_I_yY{zsvLC`=>X&gWr(BUJT&3Y|bA1j<)@X#`;z7f3TG;nUlD9zVLaDvuP#H z9g)Aox)5Tt?R&UUxDXaX_wePyJ$zlb1Y=(a#Jdij_cz6CSFfWNacaazDQ f5-|S#|6}|v`N^zp)HB|rktE=K-hXt%{L}vcP0F{T diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.class deleted file mode 100644 index f1239a55f23dc8d94bcbed3ff8b662785a0aa1f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2598 zcmbVNTW=Fb6#gc5;=~NOH6bnK+7hsx7IP^O;xr8;K(-i?CTY^p>&82E7Mxvoy-vcV zm3V63i`0icRO$=QMc7EKRPo%u)T-(?yN+!vP@uMEXXl(V^PTz5W&is3_dfxg$9HkG zAreDWq8%Lqqn1khYnIBV^PaLD<)usIqVkHSlizf`f<>`eT(fhf^r~4>=_}^Cnq9rA za=t*vxb4{fguvNEcE?k=Z^Krb!2wHr$t0Iz=oIL^X>OS5vTqmC^QL3D>v6;o*Us${ zh$NCrUD%E87+Xg!R|~3k?nSdupwC_aBG8|01$+N?TSD$5pq;u zE~FQH&vx>eWD{){JkPwHwM%|RJ3J!s4&D{$X>nL!@P&KQ5+`s{V4!7>;aF;mq#JRZ z#(OcGkvNNU0Ysp;gHb(xnatY<=9M@de1@yN>( zS9F?+Ee&8ue2A+8?Vg=qBV*CTv@WkvT$8vSnBCT9a}pnEv#8~6IywLgx)c_JYBXY4 z5;(adpRLudi~19Z72FVrIcm!{oWKDiX=s)|llUB8@alPP)ZIbg^v?XYg0O(Y3S|MW zA{T=tq3|_>7o?53>8GdMg6pvhtX#@wXO~%BVQSV@nK(YinuLv;%w*HDW;e{jqB~_e z8)ix1jl{J6-DusVX6YkJm z|F{l64l~c%AmH%R(yzZI%#}9XvM4JC@859Eb`-p`=!2O(m~%UA__gHIL)V1U!>73`&AKNSZnIFw2~#-aWrRUEA#m5NkwTuV}sDo#Dc zXa!@x1z;sUk1~0|k4rndaxV^G2nYE*j3ga7izCQjm{oifKCSkIZlH_}uIP}iB04Fs ziCr~k|K>>%>K+hqf@7?T3p2;~viGN-F}W>#j7$2JQ~sE%mA9&xX(+RyGTTtjKEyPI z$2n3}%tx(X(VJSKAo>+=_Yi|GxU$~!%&jBPw@x7*JS9dj$e^5JSmu#tQJsLx)jhVM z`#6Iiajxm+4{A4;_<^l+h&SHiDP4&EgZaq5zCJ{8yH3OiRYH#j*E*nJpf#5=RMt)u zxKrP_O#ZapFnu56kbRM-RV;sB2{;QSZTmt=wsClOK>G#e+C_$KstIJc4sy2+a+leu zK@0+X%ArFMPMZ4xJqGY)^byP|@?2?~vCxK7vrXg?7`%L|BUk9e4F5)xBSzhkdxUPo GxBmepv6yK9 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 81b45628029f3612957bc7abc32f392d2135d9cc..08ccdf4201a20e2567a990506a8086ff758d78e8 100644 GIT binary patch delta 97 zcmaDP@0~>=ng9w8LgA#-0WH*kfyk-o%4CV}S3>FOf43?8$a2(*YWsqdB vV=!W{pS+PXoYjp%p22-GFPDX^4}&)Y0|O5OBamcd@L});(=kAji6IsMYikc5 delta 97 zcmaDP@=Tg9w8bgA#-GWH*kfycP_+43-RX3|0*K4Azrha2(*YXOLuY vU@&5EoV<}UoYjLtp22f6FPDX^AA>go0|O5OBamcd@L});(=kAji6IsMasLlH diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble$Status.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble$Status.class deleted file mode 100644 index 113eda35e1fcfc460ccd4bd27fe5bcdd9a846d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1427 zcmb_cZBNrs6n^fyty?W`6G0}v@S?6D6a_S91VJ(aapA4H1oTVST}MgRE^UW@OCb@W z(eT+HWjwd5VFbUqE!oMr_c`Z0efpgJ`u*)EfR}h7Bf+p<<9c{l<8{66bKB*<9<-X= zZ<=oXljl1%IyRe!wiW0N@0goahwDa@Tej)EZdECpG(t0M1z9j8Riuz+NU!geN(Uu| zjdFLI7e)7simd1^?QHLe{Duk@Jq+?>WwrdSWH4;L@76p8edw3bqhbI#hLq)aE@v1l zXyqgG*wh_TN8hd}l#m)($LDWC5;tobh*(KYx!)1n{&Q@{drdG)yrI0lF46-7QsTjwEkSO91FuW;f zT@#7u{B4_D^J=6|UzrTF)oN6^|5iAK;ln?8YTbHE47svrnNG#@Z80vMnRLwtjm}-y zmMj_`+9X5Pu4o!pg8nib9= zCR;oRH@qN}vB2=^KR1X$-E?WIBfD{W^mKb)SLVncgY-Wjt&E7R1t`*f0sVQgS9Fu2 zd=e9cdq~+hMe$KipnOH|1^PZy#_))K)6v~7;fL`!#xEcdohmstb&i`CU;>}Gf-lgC z+D1XcRCG^1CzP1@6cT*_d1`v}3?pBn>&|hP(FopFDwVT<4#`EN0@e)wpczJ5}ZGN@uut3MoqNC!<6@$AeQSf>&FH-iYoViDw{> dU24$gqhpRR33{MsQJlvjMX{g^^LW0J{{thbVr&2a diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.class index d721213c185d6911eb89840030ab654b8e8777cf..4fed2cee6867c00fbe441fd30ddd50a968f4b4fa 100644 GIT binary patch delta 695 zcmYjO+ip@p6kRji4kuGe4`98ta%ky60j;!^O1%_IwWU>BAAK<~&QOj|MUc?vV%oKkQn+9m!tI03t9I8^Q&CvBq;MHm zv?sS?v$z^TTERs|pga_?^b0wmk7Xk7V8PVlQOqKzaLsgy_l78MGU67B3O8_5pUaxK zrI!O=RxB(jESuKg+s=mr({o#)Yyj)cVfSUXbNJfE9aJJ%Q@D$J0wpS!PAb8s)IY** z4;ju#ZZ2r_J|6I0XC|?TAmb3ijH^U?2=D{u^M&F!h220Xi+h|Ps?t@9Q zzra_YL;({Y`~m&~Uo`#*pN)66O-q1mcIMtQbM85FXZD(Z2K+z%efthz49_b5k1S(N zNj=sd=B@nhXzN`zRr8g>;La?i)2nHQS!+^?99SOrK}NF&EgY?tPctosO%h-mM>~#J z{zjH%baI?P7lW&$ubDXpHs?b(Iz2ea5O|>$)tFi`V@q1rRP!5~nxKa`P78`Vr|BCx zQ|u23Ji>7Xy_U{qj!|5+ z64Epqvx?G(q>OQn%VMk3(BIe&COEDNz+2d&L+M+2Kc;ZagK3WIpmxMbG5+PPBP)ft zQPRz9F1@}^M_`cEtf?1OQ>y~jFIS|@aBNXC%mwY`bFDyK<#YMGR+!#Y4MP)6u67$e zWKNEUag)$+wJhebKp6>$hLN<07IBN@Z&S?c z$Q?qK2$8T1C+^}Ntq6lFq(Q7Q`fH|oc5t>G(d_$O3^kxw4N3@ilI>2m9VF0(5xU8w z?W(HRUvtH9zpk?gzwISVHIso9jY6n8#gv^gE>V1C50ec6KM4UTdS_$%iihjPAJmIS zX`eVcYmmh?02BL&tVWdZ@G!A_keNP`xpJ6!kT`z?(ScPmBjFJq)9fT`UOb^lw8Tp< J>ggm4{s)7#mU;jH diff --git a/out/production/SuperPangWorld/resources/behind.png b/out/production/SuperPangWorld/resources/behind.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3c8f82f1ee872c3a506a467b6a53163e4f5e55 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T9!3-p2s!sj~QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`MFV_7ToV%$m6v?^|NsBndR_Sgw;43H0%fWXl`aBO>?J{d!9Xb>V36`= zb^{7=7I;J!GcfQS0%1l`4X*~E;4V)W#}Etuqmxha9ai9B?bZDAU;X;&&AqEdzFyne zkUmMH+iAA~YxTqVnHFZVN)Aa+H;HOu=I^|Dy>Q9PXOkv*RhCTX%wKsw$#(jjE#F@+ zP>;KC=u}E;_|~IyJYQRNs6;iIM%|iluF!F(qsQ`E5sMGDC;tRDF)JB4GMY|Yz!W-9 zL1^;4U)>p+_of&upY0R;LRw|6^A)qnzK2w=E?6llom=Z?=C#Rw-M^i4G)}osn#s{0 irI{w9w4g1&0O(Mlj>UQ>Nt%|2}b7 z%R%^1i9ehi3Gz%RLVKJX81_FpBj*Xz3RcQ=!yIlFn6X|!;J|u|&F(@7I~*Ds7{2i$ zS?bVmK%0f-gZ8;M6Hy#fAbsHZ`NAY6R1^Khcl@3i&-mvH_pN@Yt04*|H8A-3v?2S( zAtBa*VSW6Ce<;RIU|}gpGIBw2_iHAmioZ?Y)RC=fR8eRUo~(!xKoQ~s2VRSBu}29C z6-LH6Gk64%eRyD314G>Y1%Ek_y{W*-@!&{G2a2Pwv9f&l#roDC#WkJ|4C-pmD30Es zr_gX+KcgPSH6Bb%7KV~2;nP^k$hfD@@wYItYaE0G4s@OrKymaMZjJ|Exo^!!am{ED z0u#V!5JJ+u7ZXs+vb@WN-szv{3_Ul8v?t!41>V zrZuRIJ=(Me_cTU(C!oI7Xa^76!yN4+gL?R*!wleYj?rO;(P0Mo=+@{k!{{&rY*ce} zm|=970X`r-I?OOS%mAMj869RA9cF+}&W#Q;j1Duv=Ql@(8L$sCh|SaiE)w863t9^R zR59Aj9&Kii)%IXb<0qlo7u<3j3H5qjoOT&Q; z4GeO2^RA*SCs_bo!I76b3Eo}?G1`F3Nj`jB;|Fgyff&F=Fy-2l;T>)e!$3!&p}jx7 z6qX{u1GX=in07?ZRDoBsph1d6Mn;<&o7JexNq~!B?w(Qs>wy)+JV3`hd>lC!#Wlc1 zFz>?DP#m2Q;lRKzfBqGUYc8;|6l^y_T}gBpxFY9AMHuRe9N;3D-BUeL94#RxaNzLq z%~mL`DPd&1v(^V?&CzHOLMHM@gAg>4Kbi_bslj11BafDauo8O+R3``YE1l<9&RuF~ R16=FM;OXk;vd$@?2>@UwDk}g0 literal 0 HcmV?d00001 diff --git a/out/production/SuperPangWorld/resources/icon.png b/out/production/SuperPangWorld/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a972974ae44eed7aa2f0e9fdf8d6ee1d972f8f GIT binary patch literal 448 zcmV;x0YCnUP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0aZyvK~zXfy_COB z0znYQ_jm-aw4tD}v9LBVBv#ZU^j8=k!4eAz&tP#qiJ_#TA>j$2ATbtNSmG<7v&`VK zw==VQT=*qq=Ke6>&g{3B?fx){v=<+k8S{D9!AvG7^m=<~9+uyS2)M;LB+(Ye3LxUf z7^KBigxoHO6fus<=%^@-j$`z)z^qDWgsd4zq<^2=2)xa=nC*dQH{B^-{gWgF{0y%# z(*eP+$9J3WHa#0%qJ{G3wV_v~1>}>ljlLM`y1Hx!Pc~*(Gy5Z0A%E3E<40T!SGF6! zBX)Et`$K>T2iuYKr#dvYN7}+f*8$oH!DS&k`=~<1k=4<{M5984Ygr;%s3;1&OrtDI z%ydpNL#R8BlU)}p7ThBmr9T=fN}n09G~BCg2G?Qk`GBG%0;C*jade?VzO`c!JMx93 q{m{l2eU7wE*Mu7T)@htc$e3TPaIs^qGs_160000Nn{1`B?5dxT;&hko@p)hwqBP(V=GYX|NsAqiHSf)81wlaAjMG<M!rJ|JS+iAjQ;)a-@DD-xNn{1`B?5dxT;&hko@p)hwqBP(V=GYX|NsAqiHSf)81wlaAjMG<K)%BYJj?-Htnca{TNZjO*pMmz zb&2SowrSf|)}NK0a%s!+Plw#A+_cqIPWb3sv_$l;khs{?%u;+Vsd6!&r03EM(~Gg% zx|jP{n59ncvsxH&^6)E@WBi+ro$PJ)o+Dy-bE3hu=37E{8c({Z<}5b&7oPoN)zSwO zr|c7IJKV2WBzc_8bK!E6D65Cj>HRO4|2C@ZKPJ5G?))WhC$8bSt#Rh0w9XExC#=&y z?QyIS-MoTzYoyhI4*kix!e2~o-;_A5IrX0X3@Nduko(s`Vaed>>gTe~DWM4fnPre= literal 0 HcmV?d00001 diff --git a/out/production/SuperPangWorld/resources/right_standing.png b/out/production/SuperPangWorld/resources/right_standing.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c227387a63cd27312e39058ac65898f2da37b9 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T9!3-p2s!sj~QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`B?5dxT;&hko@p)hwqBP(W9$F_AU%nRi9j+fWY;Mm#ZeOE7Yq~!0fu|c zdn18joCO|{#S9F5hd`K7RKu$QD0srt#WBRff9b_Qp=JXPmJ1r0JOB6Y-oVl+_4{Gj zu^F{#Ub&Z3?*(NqKc3V*FYxY%#N*j+=0|pO@4PU_>uu4pyRT}GKN3*6bfLGRU!v3H z=5O}!rin{pIK#PC+;)0czSMBdyAI!=tr?R{(mQKa{iLiNn{1`B?5dxT;&hko@p)hwqBP(W9$F_AU%nRi9j+fWY;Mm#ZeOE7Yq~!0fu|c zdn18joCO|{#S9F5hd`K7RKu$QD0tP=#WBRff9b_Wu4V@w<_njte*drEW8!=M-W-Dn zHo3FGFG_wS|668w?RS>b{KESml8?StJ#4OG9VZ=_;kkBM%_X_7`yMB#8%e*=TH}(Y z)&ICvyD=sBU5hen$q~cOg&~`MxvlEjwQ}Z@V)3(ci-LVmcx`-hM&(Vd-b@z5Qm?=h z$~zyr&XAP|aG&%+py{s;|1|A~n)7tBd+*G>Z6EkMy*_Bqja#~(m0t#F2Ho@xxjOg4 ziYzv(^WL|7C!3slG+Tv{m7`<+Y7bN4Vv&uSM=aY7z2N^tF L{an^LB{Ts5LG726 literal 0 HcmV?d00001