From 2f00876eecd9802b8f5d6b59e82a068fec666898 Mon Sep 17 00:00:00 2001 From: agreiner Date: Tue, 15 Jun 2021 18:00:49 +0200 Subject: [PATCH] Aufgaben 11 --- .../game/managers/GameLoopManager.java | 2 +- .../game/managers/GameObjectManager.java | 55 ++++++-- .../game/managers/GamePlayManager.java | 126 +++++++++++------- .../game/managers/InputManager.java | 16 +-- .../superpangworld/graphics/base/Bubble.java | 112 +++++++++++++--- .../graphics/base/MovementPatterns.java | 29 ++++ .../graphics/base/Position.java | 8 +- .../superpangworld/graphics/helper/Level.java | 27 ++++ .../graphics/helper/Player.java | 26 ++++ .../graphics/helper/XAxisComparator.java | 17 +++ .../graphics/immovable/LevelLabel.java | 10 +- .../graphics/immovable/LevelProgressBar.java | 2 +- .../{LivesIcon.java => LivesLabel.java} | 26 +++- .../graphics/immovable/ScoreLabel.java | 11 +- .../graphics/moveable/HexagonalBubble.java | 3 - .../{Player.java => PlayerObject.java} | 14 +- .../graphics/moveable/RandomBall.java | 4 +- .../graphics/moveable/RoundBubble.java | 25 +++- .../graphics/moveable/SpecialBubble.java | 3 - .../Programmieren_2_jar/Programmieren 2.jar | Bin 722351 -> 728213 bytes .../game/managers/GameLoopManager.class | Bin 1982 -> 2000 bytes .../game/managers/GameObjectManager.class | Bin 5087 -> 5696 bytes .../game/managers/GamePlayManager.class | Bin 4613 -> 7096 bytes .../game/managers/InputManager.class | Bin 2301 -> 2325 bytes .../superpangworld/graphics/base/Bubble.class | Bin 2338 -> 4916 bytes .../graphics/base/MovementPatterns$1.class | Bin 0 -> 1367 bytes .../graphics/base/MovementPatterns.class | Bin 2281 -> 4244 bytes .../graphics/base/Position.class | Bin 3063 -> 3546 bytes .../graphics/helper/Level.class | Bin 0 -> 513 bytes .../graphics/helper/Player.class | Bin 0 -> 611 bytes .../graphics/helper/XAxisComparator.class | Bin 0 -> 1047 bytes .../graphics/immovable/LevelLabel.class | Bin 1729 -> 1822 bytes .../graphics/immovable/LevelProgressBar.class | Bin 2655 -> 2654 bytes .../graphics/immovable/LivesIcon.class | Bin 1371 -> 0 bytes .../graphics/immovable/LivesLabel.class | Bin 0 -> 1583 bytes .../graphics/immovable/ScoreLabel.class | Bin 1444 -> 1536 bytes .../graphics/moveable/HexagonalBubble.class | Bin 2151 -> 1989 bytes .../{Player.class => PlayerObject.class} | Bin 4021 -> 4051 bytes .../graphics/moveable/RandomBall.class | Bin 2568 -> 2598 bytes .../graphics/moveable/RoundBubble.class | Bin 2213 -> 2658 bytes .../moveable/SpecialBubble$Status.class | Bin 1427 -> 1427 bytes .../graphics/moveable/SpecialBubble.class | Bin 2554 -> 2392 bytes 42 files changed, 397 insertions(+), 119 deletions(-) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/{LivesIcon.java => LivesLabel.java} (59%) rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/{Player.java => PlayerObject.java} (89%) create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns$1.class create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/Level.class create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/Player.class create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.class delete mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LivesIcon.class create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.class rename out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/{Player.class => PlayerObject.class} (53%) 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 8cb87d3..9650cbf 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameLoopManager.java @@ -18,7 +18,7 @@ public class GameLoopManager { this.gameView.setStatusText("Andreas Greiner - Java Programmierung SS 2021"); this.gameView.setWindowIcon("Target.png"); this.gameObjectManager = new GameObjectManager(gameView); - this.inputManager = new InputManager(gameView, gameObjectManager.getPlayer()); + this.inputManager = new InputManager(gameView, gameObjectManager.getPlayerObject()); this.gamePlayManager = new GamePlayManager(gameView, gameObjectManager); } 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 4cc6338..2b4ef85 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GameObjectManager.java @@ -3,7 +3,6 @@ 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.GameObject; -import de.thdeg.greiner.superpangworld.graphics.base.MovingGameObject; import de.thdeg.greiner.superpangworld.graphics.immovable.*; import de.thdeg.greiner.superpangworld.graphics.moveable.*; @@ -15,7 +14,6 @@ import java.util.LinkedList; */ class GameObjectManager { - /** The GameView to display the objects */ private GameView gameView; private LinkedList bubbles; @@ -24,9 +22,9 @@ class GameObjectManager { private LevelProgressBar levelProgressBar; private LevelLabel levelLabel; private ScoreLabel scoreLabel; - private LivesIcon livesIcon; + private LivesLabel livesLabel; private Background background; - private Player player; + private PlayerObject playerObject; private RandomBall randomBall; private FollowerBall followerBall; @@ -48,10 +46,10 @@ class GameObjectManager { this.levelProgressBar = new LevelProgressBar(gameView); this.levelLabel = new LevelLabel(gameView); this.scoreLabel = new ScoreLabel(gameView); - this.livesIcon = new LivesIcon(gameView); + this.livesLabel = new LivesLabel(gameView); this.background = new Background(gameView); - this.player = new Player(gameView); + this.playerObject = new PlayerObject(gameView); this.randomBall = new RandomBall(gameView); this.followerBall = new FollowerBall(gameView, randomBall); @@ -68,11 +66,10 @@ class GameObjectManager { gameObjects.add(levelProgressBar); gameObjects.add(levelLabel); gameObjects.add(scoreLabel); - gameObjects.add(livesIcon); - gameObjects.add(player); + gameObjects.add(livesLabel); + gameObjects.add(playerObject); gameObjects.add(randomBall); - gameObjects.add(followerBall); - + //gameObjects.add(followerBall); gameObjects.forEach(gameObject ->{ gameObject.update(); @@ -84,8 +81,8 @@ class GameObjectManager { * Get the player object. * @return the player */ - public Player getPlayer(){ - return player; + public PlayerObject getPlayerObject(){ + return playerObject; } /** @@ -96,6 +93,38 @@ class GameObjectManager { return bubbles; } + /** + * Get the level label. + * @return the level label + */ + public LevelLabel getLevelLabel(){ + return this.levelLabel; + } + + /** + * Get the lives label. + * @return the lives label + */ + public LivesLabel getLivesLabel() { + return livesLabel; + } + + /** + * Get the score label. + * @return the score label + */ + public ScoreLabel getScoreLabel() { + return scoreLabel; + } + + /** + * Get the level progress bar. + * @return the level progress bar + */ + public LevelProgressBar getLevelProgressBar(){ + return levelProgressBar; + } + /** * Get the harpoons. * @return the harpoons @@ -114,7 +143,7 @@ class GameObjectManager { for (GameObject gameObject : gameObjects) { if (gameObject.getClass() != LevelLabel.class && gameObject.getClass() != LevelProgressBar.class - && gameObject.getClass() != LivesIcon.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 9d5f8f2..241f39f 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/GamePlayManager.java @@ -4,6 +4,8 @@ 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.moveable.Harpoon; import de.thdeg.greiner.superpangworld.graphics.moveable.HexagonalBubble; import de.thdeg.greiner.superpangworld.graphics.moveable.RoundBubble; @@ -11,7 +13,6 @@ import de.thdeg.greiner.superpangworld.graphics.moveable.SpecialBubble; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.Random; /** @@ -27,6 +28,10 @@ public class GamePlayManager { private boolean listHasBeenDeleted; /** Generator for random values */ private Random random; + /** Das erste Level */ + private Level level; + /** Der Spieler */ + private Player player; /** * Create the manager handling the gameplay. @@ -37,61 +42,26 @@ public class GamePlayManager { listHasBeenDeleted = false; this.gameView = gameView; this.gameObjectManager = gameObjectManager; + this.level = new Level(1,10000,10000); + player = new Player(this.level); this.random = new Random(); - gameObjectManager.getPlayer().setGamePlayManager(this); + gameObjectManager.getPlayerObject().setGamePlayManager(this); + gameObjectManager.getLevelLabel().setLevel(level.number); + gameObjectManager.getLivesLabel().setLifeCount(player.lives); + gameObjectManager.getScoreLabel().setScore(player.score); } /** * Handle the gameplay. */ public void updateGamePlay(){ - spawnAndDestroyBubbles(); - } - - /** - * Spawn and destory bubbles. - */ - private void spawnAndDestroyBubbles(){ - // Spawn a bubble every second if(gameView.timerExpired("SpawnBubble","GamePlayManager")){ - addRandomBubble(); - gameView.setTimer("SpawnBubble","GamePlayManager",1000); - } - // Remove a bubble every 5 seconds - if(!gameObjectManager.getBubbles().isEmpty() && gameView.timerExpired("DestroyBubble","GamePlayManager")){ - gameObjectManager.getBubbles().remove(random.nextInt(gameObjectManager.getBubbles().size())); - gameView.setTimer("DestroyBubble","GamePlayManager",5000); - } - // Delete all bubbles after 10 seconds of playing - if(!listHasBeenDeleted && gameView.getGameTimeInMilliseconds()>=10000){ - gameObjectManager.getBubbles().clear(); - listHasBeenDeleted = true; - } - - - } - - /** - * Adds a random bubble to the game. Percentages: - * - 60% normal bubble - * - 30% hexagonal bubble - * - 10% special bubble - */ - private void addRandomBubble(){ - int randomNumber = random.nextInt(100); - if(randomNumber<60){ - RoundBubble roundBubble = new RoundBubble(gameView, new ArrayList<>(Arrays.asList(gameObjectManager.getPlayer()))); + RoundBubble roundBubble = new RoundBubble(gameView, new ArrayList<>(Arrays.asList(gameObjectManager.getPlayerObject()))); roundBubble.setGamePlayManager(this); gameObjectManager.getBubbles().add(roundBubble); - }else if(randomNumber<90){ - HexagonalBubble hexagonalBubble = new HexagonalBubble(gameView, new ArrayList<>(Arrays.asList(gameObjectManager.getPlayer()))); - hexagonalBubble.setGamePlayManager(this); - gameObjectManager.getBubbles().add(hexagonalBubble); - }else{ - SpecialBubble specialBubble = new SpecialBubble(gameView, new ArrayList<>(Arrays.asList(gameObjectManager.getPlayer()))); - specialBubble.setGamePlayManager(this); - gameObjectManager.getBubbles().add(specialBubble); + gameView.setTimer("SpawnBubble","GamePlayManager",3000); } + } /** @@ -122,7 +92,71 @@ public class GamePlayManager { * @param bubble the bubble to remove */ public void destroy(Bubble bubble){ - gameObjectManager.getBubbles().remove(bubble); + if(gameObjectManager.getBubbles().contains(bubble)) { + if (bubble.getSize() > 1.25) { + addRandomBubble(bubble.getSize() / 2, bubble.getSpeedInPixel(), bubble.getPosition(), false); + addRandomBubble(bubble.getSize() / 2, bubble.getSpeedInPixel(), bubble.getPosition(), false); + } + + gameObjectManager.getBubbles().remove(bubble); + player.score += bubble.getBurstScore(); + updateHud(); + if(player.score>=level.neededOverallScore){ + switchLevel(); + } + } } + 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); + } + + 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; + updateHud(); + } + } + + /** + * Add a random bubble with given values to the game. Percentages: + * - 60% normal bubble + * - 30% hexagonal bubble + * - 10% special bubble + */ + private void addRandomBubble(double size, double speedInPixel, Position position, boolean spawning){ + int randomNumber = random.nextInt(59); + ArrayList collidableGameObjects = new ArrayList<>(); + collidableGameObjects.add(gameObjectManager.getPlayerObject()); + collidableGameObjects.addAll(gameObjectManager.getHarpoons()); + if(randomNumber<60){ + RoundBubble roundBubble = new RoundBubble(gameView, collidableGameObjects,size,speedInPixel,position,spawning); + 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); + } + } + + /** + * Loose a life and remove all bubbles + */ + public void looseLife(){ + player.lives--; + gameObjectManager.getLivesLabel().setLifeCount(player.lives); + gameObjectManager.getBubbles().clear(); + } } 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 21c7eaa..70b188c 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/managers/InputManager.java @@ -1,7 +1,7 @@ package de.thdeg.greiner.superpangworld.game.managers; import de.thdeg.greiner.superpangworld.gameview.GameView; -import de.thdeg.greiner.superpangworld.graphics.moveable.Player; +import de.thdeg.greiner.superpangworld.graphics.moveable.PlayerObject; import java.awt.event.KeyEvent; import java.util.Arrays; @@ -14,18 +14,18 @@ class InputManager { /** The gameView, which displays the player object */ private GameView gameView; /** The player object */ - private Player player; + private PlayerObject playerObject; /** Flag, if diagonal movement is allowed */ private static final boolean DIAGONAL_MOVEMENT_ALLOWED = false; /** * Create a manager handling the user input * @param gameView the GameView - * @param player the player object + * @param playerObject the player object */ - public InputManager(GameView gameView, Player player){ + public InputManager(GameView gameView, PlayerObject playerObject){ this.gameView = gameView; - this.player = player; + this.playerObject = playerObject; } /** @@ -34,15 +34,15 @@ class InputManager { public void updateUserInputs() { Integer[] gedruekteTasten = gameView.getKeyCodesOfCurrentlyPressedKeys(); if(Arrays.stream(gedruekteTasten).anyMatch(k -> k == KeyEvent.VK_SPACE)){ - player.shoot(); + playerObject.shoot(); } for (int keyCode : gedruekteTasten) { switch(keyCode) { case KeyEvent.VK_LEFT: - player.left(); + playerObject.left(); break; case KeyEvent.VK_RIGHT: - player.right(); + playerObject.right(); break; default: continue; 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 364cff6..4633833 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Bubble.java @@ -1,9 +1,10 @@ package de.thdeg.greiner.superpangworld.graphics.base; import de.thdeg.greiner.superpangworld.gameview.GameView; -import de.thdeg.greiner.superpangworld.graphics.moveable.Player; +import de.thdeg.greiner.superpangworld.graphics.moveable.Harpoon; +import de.thdeg.greiner.superpangworld.graphics.moveable.PlayerObject; -import java.util.ArrayList; +import java.util.*; /** * A Bubble, which moves around on the screen and can be shot by the player. @@ -12,6 +13,16 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb /** Flag, if the bubble flies from left to right */ private boolean flyFromLeftToRight; + /** Random generator */ + private 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; + /** Temporary movement action */ + private Position nextPosition; /** * Create a bubble with default values. @@ -22,11 +33,49 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb public Bubble(GameView gameView, ArrayList objectsToCollideWith){ super(gameView,objectsToCollideWith); rotation = 90; - size = 5; + size = 10; width = (int) (12 * size); height = (int) (12 * size); - speedInPixel = 5; + speedInPixel = 1; flyFromLeftToRight = true; + + spawnID = UUID.randomUUID().getLeastSignificantBits(); + random = new Random(); + position.setTo(random.nextInt(GameView.WIDTH-width),-width); + spawning = true; + spawnSpeed = 500; + gameView.setTimer("spawn"+spawnID,"bubble"+spawnID,spawnSpeed); + + nextPosition = new Position(random.nextInt(GameView.WIDTH-width),random.nextInt(GameView.HEIGHT-width)); + } + + /** + * 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 + * @param speedInPixel the speed in pixel per tick + * @param position the position + * @param spawning flag, if the bubble is in the spawning phase + */ + public Bubble(GameView gameView, ArrayList objectsToCollideWith, double size, double speedInPixel, Position position, boolean spawning){ + super(gameView,objectsToCollideWith); + rotation = 90; + this.size = size; + 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(); + this.spawning = spawning; + if(spawning){ + spawnSpeed = 500; + gameView.setTimer("spawn"+spawnID,"bubble"+spawnID,spawnSpeed); + } + + nextPosition = new Position(random.nextInt(GameView.WIDTH-width),random.nextInt(GameView.HEIGHT-width)); } /** @@ -34,32 +83,59 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb */ @Override public void updatePosition(){ - if(flyFromLeftToRight && getPosition().x + (width*size) >= GameView.WIDTH){ - flyFromLeftToRight = false; - }else if (!flyFromLeftToRight && getPosition().x <= 0){ - flyFromLeftToRight = true; - } - if(flyFromLeftToRight){ - getPosition().right(1); + if(spawning){ + if(position.y >= 0){ + spawning = false; + } else if(gameView.timerExpired("spawn"+spawnID,"bubble"+spawnID)){ + position.down(width/4); + gameView.setTimer("spawn"+spawnID,"bubble"+spawnID,spawnSpeed); + } }else{ - getPosition().left(1); + double distance = position.distance(nextPosition); + if (distance >= speedInPixel) { + position.right((nextPosition.x - position.x) / distance * speedInPixel); + position.down((nextPosition.y - position.y) / distance * speedInPixel); + } else { + nextPosition = new Position(random.nextInt(GameView.WIDTH-width),random.nextInt(GameView.HEIGHT-width)); + } } + + } /** - * Pop the bubble. + * Get the score to add when bursting the bubble. + * + * @return the score to add */ - private void popBubble(){} + public int getBurstScore(){ + return (int)(size*100); + } /** - * Freezes the time. + * Get the size of the bubble. + * + * @return the size */ - private void freezeTime(){} + public double getSize(){ + return this.size; + } + + /** + * Get the speed in pixel per tick + * @return the speed in pixel per tick + */ + public double getSpeedInPixel(){ + return speedInPixel; + } @Override public void reactToCollision(CollidableGameObject otherObject) { - if(otherObject instanceof Player){ - System.out.println("You died!"); + if(otherObject instanceof PlayerObject){ + gamePlayManager.looseLife(); + }else if(otherObject instanceof Harpoon){ + gamePlayManager.destroy((Harpoon) otherObject); + gamePlayManager.destroy(this); } } } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java index 9aab45f..3d40629 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java @@ -1,5 +1,8 @@ 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.*; /** @@ -22,9 +25,35 @@ public class MovementPatterns { 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); } /** 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 0beea02..fe061a3 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/Position.java @@ -5,7 +5,7 @@ import java.util.Objects; /** * Die Position eines Objekts auf einem Fenster anhand zweidimensionaler Koordinaten. */ -public class Position implements Cloneable{ +public class Position implements Cloneable, Comparable{ /** Die x-Koordinate */ public double x; @@ -137,4 +137,10 @@ public class Position implements Cloneable{ public int hashCode() { return Objects.hash(x, y); } + + @Override + public int compareTo(Position o) { + Position p0 = new Position(0,0); + return (int)Math.signum(this.distance(p0)-o.distance(p0)); + } } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java new file mode 100644 index 0000000..967b63c --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Level.java @@ -0,0 +1,27 @@ +package de.thdeg.greiner.superpangworld.graphics.helper; + +/** + * A Level representing a level in the game. + */ +public class Level { + + /** The number of the level */ + public int number; + /** The needed score to surpass this level */ + public int neededLevelScore; + /** The overall needed score to surpass this level */ + public int neededOverallScore; + + /** + * Create a level with a number, a needed score to surpass the level and a needed overall score to surpass the 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 + */ + public Level(int number, int neededLevelScore, int neededOverallScore){ + this.number = number; + this.neededLevelScore = neededLevelScore; + this.neededOverallScore = neededOverallScore; + } +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java new file mode 100644 index 0000000..7328103 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/Player.java @@ -0,0 +1,26 @@ +package de.thdeg.greiner.superpangworld.graphics.helper; + +/** + * A player representing the main player in the game. + */ +public class Player { + + /** The max amount of lives a single player has */ + private static final int MAX_LIVES = 3; + /** The current amount of lives the player has */ + public int lives; + /** The current score the player has */ + public int score; + /** The current level the play is on */ + public Level level; + + /** + * Create a player. + * @param level the level the player is on + */ + public Player(Level level){ + lives = MAX_LIVES; + score = 0; + } + +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java new file mode 100644 index 0000000..adf2cb0 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/helper/XAxisComparator.java @@ -0,0 +1,17 @@ +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/LevelLabel.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java index 1e46d39..15650ba 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelLabel.java @@ -22,7 +22,7 @@ public class LevelLabel extends GameObject { size = 3; width = 101; height = 8; - level = 8; + level = 1; getPosition().setTo(GameView.WIDTH/2 - (width/2),GameView.HEIGHT-height-60); } @@ -34,6 +34,14 @@ public class LevelLabel extends GameObject { gameView.addTextToCanvas("Level "+level,getPosition().x,getPosition().y,40,Color.YELLOW,0); } + /** + * Set the current level number + * @param level the level number + */ + public void setLevel(int level) { + this.level = level; + } + @Override public void updateStatus() { 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 0b4edc9..0d47cfd 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LevelProgressBar.java @@ -22,7 +22,7 @@ public class LevelProgressBar extends GameObject { size = 3; width = 101; height = 8; - levelProgress = 30; + levelProgress = 0; getPosition().setTo(GameView.WIDTH/2 - (width/2),GameView.HEIGHT-(height*size)); } diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesIcon.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java similarity index 59% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesIcon.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java index a3b176e..d9ad24b 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesIcon.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/immovable/LivesLabel.java @@ -4,9 +4,9 @@ import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.GameObject; /** - * The icon to display the remaining lives. + * The label to display the remaining lives. */ -public class LivesIcon extends GameObject { +public class LivesLabel extends GameObject { private final static String ICON = " RR RR \n"+ @@ -19,24 +19,38 @@ public class LivesIcon extends GameObject { " RRR \n"+ " R \n"; + private int lifeCount; + /** - * Create lives icon. + * Create lives label. * * @param gameView the gameView */ - public LivesIcon(GameView gameView) { + public LivesLabel(GameView gameView) { super(gameView); rotation = 0; size = 5; width = 12; height = 12; - position.setTo(50,GameView.HEIGHT-50); + this.lifeCount = 0; + + position.setTo(0,GameView.HEIGHT-50); } @Override public void addToCanvas() { - gameView.addBlockImageToCanvas(ICON,position.x,position.y,size,rotation); + for(int i=0;i objectsToCollideWith) { super(gameView,objectsToCollideWith); - Random rand = new Random(); - position.setTo(rand.nextInt(GameView.WIDTH/2),rand.nextInt(GameView.HEIGHT/2)); - size=0.6; speedInPixel = 2; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Player.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java similarity index 89% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Player.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java index fa874a0..e16d699 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/Player.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.java @@ -2,8 +2,6 @@ package de.thdeg.greiner.superpangworld.graphics.moveable; import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.CollidableGameObject; -import de.thdeg.greiner.superpangworld.graphics.base.GameObject; -import de.thdeg.greiner.superpangworld.graphics.base.MovingGameObject; import java.awt.*; import java.util.Objects; @@ -11,7 +9,7 @@ import java.util.Objects; /** * The game character controlled by the player. */ -public class Player extends CollidableGameObject { +public class PlayerObject extends CollidableGameObject { /** Flag, if the player is shooting */ private boolean shooting; @@ -41,7 +39,7 @@ public class Player extends CollidableGameObject { * Create the game character with default values * @param gameView the {@link GameView} to display the character */ - public Player(GameView gameView){ + public PlayerObject(GameView gameView){ super(gameView); position.setTo(GameView.WIDTH/2, GameView.HEIGHT/1.5); shooting = false; @@ -103,8 +101,8 @@ public class Player extends CollidableGameObject { } @Override - public Player clone() { - return (Player) super.clone(); + public PlayerObject clone() { + return (PlayerObject) super.clone(); } @Override @@ -112,8 +110,8 @@ public class Player extends CollidableGameObject { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; - Player player = (Player) o; - return shooting == player.shooting; + PlayerObject playerObject = (PlayerObject) o; + return shooting == playerObject.shooting; } @Override diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java index a5bbe2e..2763dd1 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java @@ -32,7 +32,7 @@ public class RandomBall extends GameObject implements MovingGameObject { movementPatterns = new MovementPatterns(); - movementPattern = movementPatterns.getRandomPattern(); + movementPattern = movementPatterns.getPattern("Centered"); movementPatternIndex = 0; targetPosition = movementPattern.get(0); } @@ -47,7 +47,7 @@ public class RandomBall extends GameObject implements MovingGameObject { if(movementPatternIndex < movementPattern.size()-1){ movementPatternIndex++; }else{ - movementPattern = movementPatterns.getRandomPattern(); + movementPattern = movementPatterns.getPattern("Centered"); movementPatternIndex = 0; } targetPosition = movementPattern.get(movementPatternIndex); 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 1cff0f7..3df5c76 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RoundBubble.java @@ -3,6 +3,7 @@ package de.thdeg.greiner.superpangworld.graphics.moveable; 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 java.awt.*; import java.util.ArrayList; @@ -37,18 +38,30 @@ public class RoundBubble extends Bubble { */ public RoundBubble(GameView gameView, ArrayList objectsToCollideWith) { super(gameView,objectsToCollideWith); - - Random rand = new Random(); - position.setTo(rand.nextInt(GameView.WIDTH),rand.nextInt(GameView.HEIGHT)); - this.hitBox.width = width-20; this.hitBox.height = height-20; } + /** + * Create a round bubble with set values. + * + * @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 + */ + public RoundBubble(GameView gameView, ArrayList objectsToCollideWith, double size, double speedInPixel, Position position, boolean spawning){ + super(gameView, objectsToCollideWith, size, speedInPixel, position, spawning); + this.hitBox.width = (int) (width*0.8); + this.hitBox.height = (int) (height*0.8); + } + @Override protected void updateHitBoxPosition() { - hitBox.x = (int) (position.x+10); - hitBox.y = (int) (position.y+10); + hitBox.x = (int) (position.x + (width*0.1)); + hitBox.y = (int) (position.y + (width*0.1)); } /** 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 57e726d..28dc425 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/SpecialBubble.java @@ -39,9 +39,6 @@ public class SpecialBubble extends Bubble { public SpecialBubble(GameView gameView, ArrayList objectsToCollideWith) { super(gameView,objectsToCollideWith); - Random rand = new Random(); - position.setTo(rand.nextInt(GameView.WIDTH),rand.nextInt(GameView.HEIGHT)); - status = Status.FREEZE; 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 ad67651e26d5246a91963988681db0f14bfaac44..34c2ca451bfc7a82f22ca3b7e85e030556b7df46 100644 GIT binary patch delta 27764 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 delta 22145 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 delta 58 zcmcb>zmI>zPbPlO^wg4ooW#o1B1Q%q4b6!clqMT6i}PD^F=#Rv@G!747&0;xXiU6d OJh`9Qa`QQ6CKdn(VGs`h 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 89bce7b3ce9ef4b88016123db539a446ffdbf482..e0eb6e150ac46e35ced98408f85e7e74ab0b0ad0 100644 GIT binary patch delta 1028 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 literal 4613 zcmbtX`&$&(8GaADy0{Js2-MV=7^7iX(XExH;3Ae=gap)pfqm_8b-OJ=5^u(i{&twNVVB+)Xq4b|8dLtMjl zXbL9`GgX*2%xo&_nwD+4DQ`A!x_Pdjcifzj%IY&_YDTy9tm%5GQ+zv{(-($=4+`}; z%PS1%UXN+oeP+%qn1+Iy6e~M4>_n|XwLpwn=DfnOp-RlnajtJk7NrHMUc)XlDAWm5 zKx@T=?uszWDU?B^V`wVrHe0ZAsS({aoS8Tp5fS4LY4|YqP)67PPR>KV#%t!L2csU#f9LVdq`m#PJavjp3sjj-gHA=!R73SXr(qXa#G=bo;O5Emsn`IT3`~ zFQ?IhYuVZK`Y$b$Lg7gb9~TNcb;AfUC~$QP%as2j{}%Vs8ai=;H9;-Ui7ACdMK+!m zo%Z6ShEJedAPsXU2Hx)@y-qI2W^FmPUlA9OlUXwg&s0`mWqBOts1LltCB!`-3g$I@ z8qB>2b5#O!56>rKAgk^TYiOOW1LhSy>)3iO&^8VaIk~V2U8$rqt^*v+n;B~rZeHN# zaiAKXWxbA0I}Z0BH}5!h92XIh%jYzF9$%2)7)Ez4cOR+A@)d=S2Vhw;c}?88hF3Lw z8Q0mQq;ET(C6QD(zM0NFrF-n!;aYBcU%^*n_?m{V;~NT3R_tOK4EJJ+uKEP+TN=JC zP--F0x9@8B9=^{al1}9Cp6Kh79&-)MkiGbkhS#Lg2%k`1FDzBnDk=06DQ~9G`~&6Z zhHTdD8Rc7c%NRRNuVb*S>}10;PtVRwneI8+_+)=}GJ0-IcP)7jKSm4F7VGuo|G8Z$ z?3m3PdciF1J#3bv1wC_lSkH%+w!5pHr6PmtGJZ{KN|WGpc||GoZcJhw=3Qk;+!}9f zVX@X90JW?(iKzu=q#ztjHSQ&vx28lD(iP-O$@#KWX8&TV%CJvbhQw6@5F`b|+PG!| zT1RY7;x6n1;%Xyqh$#3|3tg?uSP!~LVYYjyz#x zgP0MVs1&+35rLJ{WJwAMLdPZmeD=Xk;0JK)lz*aQL)#>=5Q9gbQD@f8m`_J6nb z41W$Bkxd+r@iOJqE}|~EjK+y2d}tB7TZ?!&S;YRgeW2HQeS|>30UA7rZ9Hi2Kr;;{_`QX1 zNxZ?)eE~Gy#LxLgBfe|Oe-h`a=)^CuHFV_|?=rT9h7zlWSNH52^)|LeMHX zM27(XA};~Bk-UwX`a|`Hi%7kOM#6op^rZpqMI7f_T@hVH^xQ<+9~uZJ9}b6j+r2XD z=^{=SF*077*?_SCBz6;z%Euy}uWPP-1NAFQ&L^XkQbMrXUn)a5q%erPecOO9v;1esU=J=;qq`Rg|S1A8DD4oEzIqyo%C0G8?2u7 zSI?ENZePay2J065buX=5w<^+c$^$%0sYaN=qiExH+kxlMk1?F4R4$(9DQJR1P2yFY z$1S{oKk{6>j2C^;+8F;f)Ztfniz>N%`Za#Tr(1lwh2QdtN`;cf@n`%Fzo(8OZZ#tR z!GJo^#`ixEGpLP!5--Zp3v{=p{xe~UjEJU7xJo9aG!u zb4Wz03B5g3#E-}CuEaTF&HFwy1(R3o)%ZS05#PZ(_lE4cC*)N^zWf1@%M6)7zDvKV H@ZSFbv=S1h 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 0381933a8d74e97a17cfa02aaacc8229b92f0619..c3f277f102b9defdc13a573269e1ad903421f98a 100644 GIT binary patch delta 78 zcmew>I8|uE1p%IdoW#o1BLAeU)Z`LI28W3gl_vfXXM^xJ3o{lmGTKcPP(+AL-p90& Qv21byb1qELU1kMV0A+<6+W-In delta 53 zcmV-50LuTB68#a7&x=?k&!c# LwgWk{^#dRU40;nf 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 fb98b0b91fc252779f1c30bf1c35e8061e817ccb..4f4c3d61d30d4d30e07502684590e60f75d2aedd 100644 GIT binary patch literal 4916 zcmcIo>t9^O8GZ&9&aycHL4vs$Ym~_Df^2hX61x!y5CQ~}7zjwB)x+*#Ibqqeo^!aV z)o5#?R%7i=slDImJ=g}4#@e6#+V;Pwe?mXC{k45&&H@Wr3;ddX*fTTl%=^we&wH77 z_D}!1^#=ft;KLA#P^=-KqXeY_$C75u8%>(2SjsW2jOoPOiLB{ljZA9FcG5|bjqIqE zaAU)UYsT8_blOT?$31OThuxde$s$39roDqhmXE2$W1&NpF;lT~e1_I_{O!(oxe&je3%F zpN>yS5xSc-&16^Rj5Teh<-{Hx58y$8s*&_ehhvZTm?K`leOB^O-1!jp;vo%nI>Lwu zl&>Ih?p#;9K*%vNNqgKMRD~mXP)S-`^4IHVz{3Lfq)e~JG+eLGN@c7OD`8~3R?Bk* zio=m^sZ31Ar?F2!bF;=&M#>l68V(5DwX*M7wP6VR@fqnLhZOgKXX2xe{9@&P}xzE`ZW*_j+?Ttkb%zI6@0)}^HStvcGkBWf9Q+Uv>? z?m)OJ(iK7nPH5=V(S>e-L+i>es2E+sHEBq;;r8~3!ly?^uQYW~q00!7V4T)*M*2!f z5&NWfRMEfA>gYp1Z8mOo#u)-q^Um-c{K( zPXM8Q2`_8-f{riBpnh~+U8%q)N)sqc+qP@=SRxU(}{d zE6gT&se0v(6{uOQ!%TKbj|+tuj&4#bUj=!(m0}^@6sPydE6VUD9K!JS2JCZN;`l#m z7a0(^e5Z7Zx3_N+v!x6iKQ9&8+UFUGv0fvq+(W~61nyqBtCuY)@RvKK@g1`9|9I~5 ziEPsF%q1`g1dE&235Uf^!j@jclBSCZgVa72ZED;u(-cy{0#6 zC*6ut{5phdnAh;WtSEjXP^;WS)c{sz(jGH&rGsB&bPx>NVS;@(|9Z_W^o4e^08E>1 zZI5k_O=NS$`6tvAs~G#4Jqj$(WfCR9zv$xmg-uRGn~_fUS)LgW;yO!ARV|4i7HQ*Q zzkp|j(3Royq%Cc@uIXy{oxtAP4qNC98a@!X@4qkQp8kOYdw2~OvCO)PQnoDKdBYdU z%2&0l@Knp9PPMG3Rm&2JtwugRs<{5kfH;mIib?%2THkO3B3cb?0cC6|7EsBiI(i+I zV^Z=!Y)(FHU{KfwN>8#uUt!(@u{cet|nBQ`b3MI5^#JKmK= z9G7e-qm|-s3piCzYU3?D2Kb$Gs&ndw3lLT}*w0-kuE2Pnqd z{5GM2-v@ZS2l)`IMK#|Zd+-n%QHKM3zZ^jnt*B=a+<=RCm?c>wCJ`g=KKz~q`B%t& zzYhq$im!1*Xk-~l&}8rH_y&P{hkbpS@-8W}q!i(s3flK_(7sG)%SfMJ4Q(U`Y-AZ# z)!P}}Ub2iS;oG5I$5Zk%EFmih^0pv>+!mb0-aC$FK%v=+yQqH?(QGD~EvUjVzA9UZ zXB+WrCuYYv>Oc=pU=W>nlJAvabi=|)R&b{n^rsb~opd_lu#D*ZGNSW2MCB~sw+i`r z`AnsYN*W(&IbP}1!93(8r$qi+T(=$K-`r5s5Yo`B;oHUh@1R3k%(u&TX_xQe5Wmvp z2Xij}F}>*IEQZ;{33K^7?_o={n2^rl&!n0Bt#QpoShKh$*Yj7SrRmM%g;$cQoOlkG za?77s#50|B9PH*kElWh&Sa#W@>TEeVwup(9$tB%ZCdcPgplv=f_S0j50irobq#wsF z4B;@&(}EW;!q=69r|=w}CZ+~%B7wis=Vdh15Mu|=@R3rkJpSXH6(#Ol5!m$)bpI2N z75|-qCGdUxzy}!z5m3uRJWORZrpK=Sk_<)4txDBQR*Cn+D3lW_@I(A4Cn3hw(u5^a z!nHNbGkMG<%gjG6$h>*}P`9)ls!)_8@nPn;@ zq5dNfW)kvy8Mdszg6D_+#oH)@lD)f%G&WC8%t8s delta 982 zcmZuvOHUI~6#njX+9|{I0TfUX(;|;PkOl;#AP*4*6|`EY0=@PTT~nHn)Bb;r)l zEEJ82al^_*6AOxwF&yzFPeD`|}q72`rRE z7h?gVifuNCXpzv0HipWKq9?U=Radn&hW>EGcqI1uD-c0cKukhAybQfY$rUj)x6^nh zxiod7v}!;ju{C+~}2X#@yhu%CasX z!O%w)x{ArHyrJYPFo3fH1|(XI+E~|>RR)JvpmMd7){d&hlX-Pb zPw9C@ULA1b97DydRtPSs%2G(gd5j6TAmJj$8EOupFbFxbK$a)twML1raYoVtE*Y}3 z-SV0do*QX?_|s2ef(>~Kxg}Xw4o2k&N74+QlrAr>Ov$-vc_FKif}EBcEi71AT+S=X zQ)OCRRg7Qa_jW!+jgehF5h)UublGMyZ*KvayrU*;> znQ6+*P=-UAayM}cMP_OGK&?#Ld~^rFEi^~>(7b~%MRl9BRIMxq5P$gwl~D%?-A03X z?ll7CbKX~P;kG>3e6N}J?V)p<7&h$r-(3r-Z$&YTHWC}g2%;EAj6|Qp9O9NeTljq0 z-Yn^J(T`SNC6IwR5^rmdQQp+f%nqD2Kif?AUqx8C2#5K9h~)neX5tVg!)@Ftx16Cq z91;Doujt!CWqV6G7#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 literal 0 HcmV?d00001 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 index b0cfa0aa3c62b9ddec73fab8aefdccc378e09224..54f5e9bb98e4726c9c3311088c5ebb3a3271526c 100644 GIT binary patch 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 delta 580 zcmY+A%TE(w6vcnvFrC(Mf+dwXZ zhe$9rYGQQj%5C>+{{HX@ILz9HUv}~t$_DSr z+Oz0!%_q%xzzI&q#+?XHsj=RuuSa#;I1_M|bMZ^}kas>{is|@^ySM)$Gihc6E^*lq z#^2m9-jd3CR|BqbJuaqlJ8#&ziXpdea{qKQdLE6gM631DnQF7P@bu_r!7G}$m0sQ) z%S@TL;_p7fFk5l7qNA^$Z5VDQ*)8Qc^1^+prSKGQgIN;4Pt{-XtDw^=y~Q6GJJ9C% zTmmOXEZj(@?kMgeqnO2IK-z?rRJiFh8jzHwIJhq?LmQENSmGhOyP}k2fL6x1NJ1QR!+R0sYP|}tKa;#k$H7PRb=R0pkco5}agUof<}a_l38O0W2i(ombZ|4jX4bcB$D{}`8g#-Z+7 P;lW?yRiTHna(MIy24-79 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 d6da8bccfdbff808b37a5213e708360a8193b993..4fd40daa1b526b50fb97d9d3da12b95cb9e238ed 100644 GIT binary patch literal 3546 zcmbtX+fy4=9R5y7*Z`YAq0kn4v(Ppqv{8F6ZJ{N_(uUrGR7$HZ$u`*%vT1e$R9kht z%s4)%kB;N3`qCNejBS}ZIzIW}-{h#@*b$r~*fGdeScB z^n5a3(T$Q`Nm|viUMX|^yjdyc*sYZdM%GGBYnGn8YFdVEm?Z(Rz$+!uqAFS?l(^r_ z)+WiLT_6-orTQishe%TXHKPk#6l_(o4c!9KWtL-_T_ClxIqxk>$+_EA?7&Wepmnc8 z6N0f+pVPlv#mm^knH95I%DDp<+qprnioMt;uw_=8(TB}aR;9sReJs;$L6$RRljmappydmY;zYA{S;0sIHO_^Ljs!|@>Sa?da*%L!GdN{|E}1S zZ@Fi2A2$o*oQh$jXi3hHQfA3yAeP=(+zhy098vMQ^lqbNlEuZ+6` z?P)Ws6(_WcA=_SO&@LEs#PN-q&Hak{9WO~H7$#+7K`+V_G4cg=2dZUG$(i%a+K{E& zQj(Bq7xW5!YMX8vtd4mvIRqjZTg%RjX=RUXqkgZd70I_VRwrO?vJ4QueeDqUD%Xlf zSO%Rd5^K^ZIhL6!&9wwt51uodG7K5buF8a%U%QR3$H`Br^MJpz=B85{)%(l}!a1hf1v6*0Ho|I#jjDn{voXr)|Hw|dj2Ia4kBP4rynGkV3s@%!Z!ig?rOrT~TcR52=uvkf7!TSO`|9dK{g=;GhfG`Ve z09SC0cOefl9stZY=h?wGo*^q-i{#eoxFFU z30n}wR=mNU-CW3Jn7|D_<(u3_IB#;J24|Z_Z<{0BM2;!(X!IG{mf_`50PI8~b~&&v zgyO*pyvY%l=?M>_B|iBxl-4|{u7=smV|1Snro{&{>A?&WMlyF{_Sb_sK$wFLOqauM z35JVs(=k$DYCT@rI=l`O@JL-=Q*?l9-YQ=8U``R{^b2_1s?RGT_40Yum3^3isk*#w z)#nwFdaZ%EM40poc->x)7Y$tlc%6Wmy1Z_$$EzO9O~OpQfY)2KOt|J{LQB0Yh&nNo zW$fe#sym==2Ka+xDFa%ZRFfIN4+GD?Hzka?%dylAA1I*Jl!4KA)opc)SYN@=4rPOBH@) zcxY8VWvaA^G^@k@-w{s#fZ$l-G5Z6QA%XpO%R9wo?X zte@7p7QgxpI@yZ2cC)1fNx9(>AzY?zIr|6-K4u~NgdfqL`kXmfQ+JR~zC#i_um^eS z9Dw8-K}d;;ztBszLsI$z43FuESDv8Pr`fsGA1KaA`&x?n;B& z&dP6k@{z|tk|Q$ILKOGH>NpAeXoft%8BPvzNrEtADDq9h93q?y@}{`-%Truh=I4g8 mAF9cN3SyQ^0t|E0d6sdHPeubOycQTz^5>CYNIk>{*!C~`aJAb2 delta 1238 zcmah|O;1xn6g~6k>y-D}f)Kt!6$C35f(;Q8F(Q)kr63@Ff}gci1Zu%xj2oj7-5BG- zS@;)R8A;TI3s$V$7`HC`0d8HmG2)qd6`oo{+Rke`_ndp~x%Ymq|6b#K`1yVfKsRo! zIx|)%ft0|ZeF^ozI#?w!AW%71E*o2hcvpb{&nlkPC`ApTsKqe3Jx>AXB!3M z1q(JpehX4W_7}}G?q#CTKP-r73nG78FhZKqZ3ImG$AXBq;2*|GGM*|bY@%Snmr}n4 z(~Q5cje?VfIZHaRW^G>7bT-3&%n+S5Xm7?$3sv5!lao}TC+C^d*`YCdj)1%`Q*&Wz zfM%TLyycNVMr8KaVLxwC+w!YpLEEJ>(j!aDg6SCm#Ds?A?^zi)mUXc;AGJEWmcg- nhC~2No(d*e>=^6=*HwM*2!-bALQrP*ez1@6#+T9t0}G z(X@_z)N62D9KaR0j>#{QnCAXmQ<{tduHp` z8EF9#7{`W-rm<^fL@~wXqe+x&GUAbowh`Mqal9cdl`3U68U{fynhMyDc}xP$kW)OD z<}Y%lm}!T3B-K>v)ZjnTE|PR5a1;J3|DAv{$=5ofr__va%D`7tp6Sj1<4Nxpuq{2yd`O%{$-X(7V{8_0GJ76FyJ5!<;tGP)8RH^w^=# e4B+khS?Mxjr*f_+Z)UPd(=jV7GxZo*=>Gz=7ir`G literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..16f617864967ffb5f085939bd83ecf3bcf827d2d GIT binary patch literal 611 zcmbVJ%TB^T6g|@xuuvZ2`?YWfEbPvAObpS4q>2fqac71yp(SHWrUm0?xgaJk`~W}7 zcnACeoF>ybXYQGM=FIoc=NEu8928-|EWmP*L!O~F;#2NQ9uM7aeZ22PHTR zIT=kw%D_6BtvIO8*)&L$V6gA5pPs#rf74?qx05){c%1oMPJ~IWO)VEwAsJ4*WvzHx zc)@Vq_@}h#Gg$3pKsKu$UH*RZ(iiHH_a!lPFA2Exxr#LYBdsiq=&GknH(bOB_ wfVJ{7*e!F0@;gxmwrH-?(V%jR%57pQ*rpGJ<}&P1V?CYil<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 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 32141a2b11587bf6bc56fee2ad87ab8dde8b155f..354562442391f90cc70e5e69277e4f39ac34f8c6 100644 GIT binary patch delta 312 zcmYj~J5K^p5QWdM_uk!X)-5bhz$M1YERC(fD7Xo_fbX}RiMIm^*Vx(9-^Pmnu!W5U z3DHJ>kri>c7-KQ7GiSb;EQ~_`Yx*_@u!-B;e|JJJ(~n*Kquui7u2o!lMKR~DfCgvZsxh-`|0wE@ sqOgobW)Swxy;`epSXaO^IOe|`q?Xr4hpWeWm*W)YmQT3A6>d=a0WZ@ncK`qY delta 215 zcmbQocaWFs)W2Q(7#J8V86q}v9cG?WczVpFu%0L$|L4PpRd lh&(fcJCMi3;KAStq&a}%UO*hc5Cr6L0a?Kep$y>+k^rU;BDMek 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 b5e49941198bc97fabe63e246d7fafef76a0538e..3ba71572fe2131a17d87fb6db62258162ae784a3 100644 GIT binary patch delta 82 zcmcaFa!+K#KX&CV22KVh1_lN@E$!_Lj9MZL>{}T)wFFYPGVp5&aBO7|)?%Kl#NjF{ f%OJ&I%OK4V22?8s(ZLYT5CP-?^=@wAxXlOvwzm$Q delta 83 zcmca7a$jV_KX#RF22KVh1_lOuE$!_Lj9MZL>{}T)wFFYPGVp5&aBO7|))J7LtjOUi gE5{(kV8V!Z diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LivesIcon.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/immovable/LivesIcon.class deleted file mode 100644 index 0f4a17098ee0063afb31bc011450c9adcaf685e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1371 zcmah}>rN9v6#k|_7nbE}0YQ*Oyp&d05k<6!l~zoX1`Lq?pLQqhV7uGwZd>(-&*CeX z04DzM0emRqncV^rNxI3N+sygSWzNj+KRJ#UDE@`2z#q{sTXO6 z4g1jb%*3;WC?yRh!+OtRuQx27{rW8g&~YCRG(0r$2uW&wPox|3q3V4R9J|Dm`FwO3 zDFbOdrgEzkTpbd_M(=X3Cz=_=8bjSQ4-d_V=p>R75?#^m_m3PdhYO~z+#*rQkwRR_ zN>MD7%}_M;A!^AJ1MBLP*(arK7DU}bM!#GBAy{FhE?>DOs@pdZL)MoR{PSa^bfGq z=oz$B0wZS_ON|?6m<;K3>J+mHEF`dWj^*zm&}*W1p%I-Yhz01RP0+E-z$EP+Qdq_g ztxiYqc!Mly6iAID1!s7R-EI>5+t18+ltcX1&Hb%d8j^|gA)q@ARD~m{m kQH;pH8-*cviJhi>3Y%RytJ*=GQ0YaE?9wq$wiw?11^4SlV*mgE 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 new file mode 100644 index 0000000000000000000000000000000000000000..71e16e0657cbb2c6bfa6a6c6a3d9bd67987e4116 GIT binary patch literal 1583 zcmah}-)|E~5dPLq?D#kcxB(hcib4Ev9EeLPA=F6-*oC?^P?5;*YkO-SIp0}#XQ%B0 zPnCG;|4{X%&y@(3`q1a9e^OPo{pQY21V!>mo}HPUo$s5OUH|#dZ@&Y$i!Uvtkj`Sp z#w;=l>m5^$dL7d(cLU>iCMbu)fe8lM>+bu3+o4+zdQLkmw{&RAk96NWZ9O;bNFlS~ zcuusXuvTnL&BAjd$Lz-mnp7&w%^c>C%fhm847S4N)EpBgPQUMubjvm6hBGo@L${2p zFcx1`Ob*rJsS%+tuVXqbfO;P>*76Y<9+dFddBJY zB5|Fwu_UgX>wImh{?LoP=WTq53q&0Fp_3r4Pw&8lecZ>d#wROTTvWI@we+{!m)U;t zV_ctwE4Z4)H5)}Na}-lEy^{u85t?Y%=US}QlF_W#xQ-jFvP*ConZm8l?TJ>HHt3YHv8RM8WItLS3L66=LnEm%3WHP{17<>$t0MT6a1RT)(|n@9VDF^{d(&=}=*@*m$l-y6o}|ly{=Q@w$~7zvU*c zP`&!}i9-JW5emnvz86N?i<;UU8pc-r4wv}`pVgCLzh#15xwLZHZ)>-y14rz!b0+FJ z1iv@E#ghrX>lsuOj?tNEUW9@sTe*X6l;g*JQ%d=Ksg;}rT4%bbhPPnAln;QF}1aHjh zGwL~{{zgju#pWqI#G^5_EfN!InbHzFaa4Xn_%_R5J50@}!!k2*)1}PM56fI(9)VRy VX=EB8BVlJJo8uG;b^22H;y*t3YL);1 literal 0 HcmV?d00001 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 b96068d1073f28c3e662064e5a05f94d7cd79da2..0d6d2bd72e108bf99c597ea371ba8fc5ab6a3fe1 100644 GIT binary patch delta 229 zcmZ3&-N3_j>ff$?3=9mG41pWDq*?elic?F1lk~GFQ`q39urY8m@BqzVWbm7u X%Bm!*3swaZVE|%?U5pI=VDkb1gpnH@ delta 140 zcmZqRS;EbA>ff$?3=9mG4E`Irq**4Lv)C&zGcYo+GOz(jSD;KEkj(_7owT&KGcali zvWiTe!s4gN!ywKe%pk!a354OV diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/HexagonalBubble.class index 82fc16d1c5dcd95d3042334f3d7bea06376816eb..b2a54dd009f8edc1c6abe214dbc7326a319263ec 100644 GIT binary patch delta 909 zcmY*XO>YuW6g_W%p))+7!lVcVg|RIyAd%7*mDaZQL#bNpSGDSf6avHqh+wS7gq=&1 zW)?2|4e>cYR_!are*_YDX*WZr%E+Ic8P z{4;Gn3RF1k;2ci47*>stEpqr<4_X_Q*F^@lF0W9Pctoa$!wZ*@l>#XhK91AyGuU2M z3e7U*=0wUkM^K=0xmYQcn*ut+aTa0Yt)$C3e0H2OK1x2Pj&Tv3;)r6}2(nG5f*9g< zBsk7flW#1WVF&Wc#J~1BQX=9PX=#o*p_jc6u;QyQTf&7HrvDIg;dFu>M|8f(qCqZeo<3Zw_miUis4be&o+G^(I-rt8Bdl@(Wz@@$td(L zea6awUu{t%AWnlPhRDNx^1VKJobm)Y8&u0CkQypv{X+Wo6cy8N^rrX5I@pW}3GRIj dTa7lBj*$L;(s|n30zAkJaeDilkBLpflfNn8ejxw= literal 2151 zcmb_cTTdHD6#j;b4Q68qI7vyHhBP$ThOkMY3B)upmn67x2nFhvrk9Mp)AdlZYwfPN z^r>%stJI%TDS*^U{Q>zS*{1C&?I_RmYgOe{rDN~AUd1A@td@1jH;d9&=2ER#tSEuVf_8Lp zU*JhH-_e5HReM_Pn~&+IKtGxMj@*-GEzlKn(evbCUi(2NRfwWbV5qIzkdEc<#t=n} z(GCc7CsT!foI^Z{K?6fLFR<9reUrehyQd_fH&@kxv|UG5nr!;2uCD{_Is$W@=``(y z0a-zZRH4 zudjkFm)7LUN~#cf@YhWEa2&50cn{afpRd2CtcsOLma2pw)=n5mvexjcN?AE)T_31Q zB>N&f5T2Maa1+yHdS6>XnGEFk-Yo;SSsE!TZI=TU%@~-)hb+>;l6xSKsMmnp56lf! z3aH#FD$|d0rwF&t7sne|yvGD)lhrL;c$6?^f^DIQ2 zxleBUH?{4^pypA$etuH}>w6BJ}(o8 zq`3$ZXGYvK#~#_#HBDDLQ_J7lV53M`t$*B{F-w@qCLH}C%C5)Tr#h=GW z{77q@*JHeuPT<`mjL|ZFgd4P^=-}9QKOJH6^u{FV2lP%3C9EUdY3$5!H~$NH>&7;H z(}>ac5@8ud9GCGv4ZA5^!3?ePwv_*>z(F#NF3Zciz z1!zK!AcY%5gyGfQO*G&MeA{xfMnu`o7}$osAk0&? z$6B`SmhDM8$F@cLawHVYp1LSn7iqMRmbpJ{a34vZU^C4K21^MP{3GPsrs_QBC}{IE R)9#%zInpv&CSzUD{{oYN8ax01 diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/Player.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.class similarity index 53% rename from out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/Player.class rename to out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/moveable/PlayerObject.class index 82c534cca687f098c7f4bcd65bcbad50536a34b9..9451239449711be9125671302d9d91fec692b140 100644 GIT binary patch delta 294 zcmdlge_3AO)W2Q(7#J8V8CJ71FflUNO%$+T^H0i3O)lB!@q&%fX|f@^HB?}74toWY zgAYQ*W;qT4MqZwRoW#o1B8aBRrkrbd1p|;pUT_{$)n;I2&|wf_&}9&3&|{Ee&}YzM zFkmoaFl4Z0FlGp5Fkwh%Fr9pvE05EXL5#r)sMdP27qb7pKvp!66*HNc*O@gQ$V!;(&FjIL4753gL4YB3 z@*G}!#>~lgc=HAG7}y!|86+4A7?cC%OCedUw4ep%RG;Q9`szgDY($I@P}rA*lqZq^*Q-%FvQ{5AwW% z&KN{29gGI6H(`==F&MmZaO6oxwE-Gx=OX7q-_IY;zi3{|jieX%03|G94+=x2ABN-84;6%CN#5!vC Hqci#kvT;I; 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 index e64ef2a521fda569760993953b0cb6c602f2a743..f1239a55f23dc8d94bcbed3ff8b662785a0aa1f0 100644 GIT binary patch delta 1058 zcmZWnO;1xn6g|`T`au~D#R3K~8llh@Z9xP|D~JNpXDjk01;2|er3fvS%7-Atm4ukM z7!nsQOk7Cf4y0YUFu3(!@H;fd`(8_nG0p9rx#!NAIp@Aj>u0O^=bvxi0d!z}*DUFL zCfFEEJ<&uunu;IId0!i!<|Y&a2fkEB!aM9e2#x@tos z$3&C!Hr2J2jMF*-+#`O``w5?y9siWx1qVni!P8`{MeT^s8Vhq_LKkK-yj zMV&Nw<{C#gI_X98$%S}2o=lkG!3~Zc^on;t&IdRHS(s>QZ*bj2-Pm01M`dwFAE1lkeW5nM$hw7aEo-1Md(dN z^Cef&)#NI{qmc}ioZ2Yz+6ug@1>RMh&}bE+yicJToJ*>sRyC}6Ebk$lMT~Z8k2lvt j>3EN{2O3GNDD0#*Ra-xO5`OwA#}q1sm#mR$9bWwfgk{G_ delta 1050 zcmZ8gNmCP15dPlGBm?28K~qpD6tV=8fIwJ65J6VS04gGjpq7ayhKM9AQ8umI)GN%v zgLttlD2^b>!Gp!YlYhpurDfS~5(0AQbie+3y8HXy%eL*E&GO^#*KYvY@M_N@OXU`n zz|K*HY6fdK6dw&lgR!}hKs+8=j4~8Doce32$n4~Bp+=vP>daR->QJw5NhNu1G^%Lg zXhw_vUGgZc44w^tnO-UvncFz7qFwKlM=o`6bfTRhXFj$RiAQ2l3q0uJ=thseD-TV3 z(8tk_LI$=XpaBjaGzQaRBs>#mP#k^EiChAPIEIa~RZ(_}Bb$70*o@q z4yUGKjKRI(ciSycF~Kp3dkktcv=Y~%Mo-PD<>CycIqu_u{#hB$^CO_*F~<`G_1{W; z&Rsm^2xCTXG&L0X@r+{@L0W6lr;YWim}BS^Y=1KAmt9kU4Lyem=V3)Y=_?7nzz{X! z7@bKpBPLZ0Uycg$CaN*POuzGV`UsgS0ZkuQ>&jB7Ov2%klc;sM4&abeXgGu?3GbfK zVL{(kOB2ngq}#NUWK~$Cd_lScmJp{C^%DH3Kf?>;W#;^%nKEIU)b<*gH-+oIY6>pC z|A4NeY5XuyJ(?#UO6&%&b`-o7@ X=}iV`3!nHuo!CUnZn8$RC9MAgH!-}# 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 f2dc6c76956a1211fb6b8640a3d0681d0e888d9a..81b45628029f3612957bc7abc32f392d2135d9cc 100644 GIT binary patch literal 2658 zcmd5;TT>iW5dO{rdt)HDLJU|Y#CTzsm?46Zumr-gNx-ZGf$S>rQp3)v-4lkHt(jQ} zzWAnZR{5yqpGXxZr4RmqRQ`y6!m@j2FCbV;DG$!p?sWG#-Tif+?mqkC&)cBqCdQZ0s6(-B*^r;JU_sL3w^QT}&X3L<~s{z0d@1 zbu`?Bw&UzdgK+6^AD*{nLA@|9y} zH`B%F{2xE^^AlsfsNoVu1>&{F4uR=^Yde8AaV3VgG`x*>1a6%AjE+F0RMWYLe02WT zCd?EvY;%AeT-ER%TNnGBU!6IU$8lZ5`842v4_xFc}A;{pFYy#hmq zY33}ayuG|*ROE)UXxO`kCont~HljrxsIU93vMbpho&Go=x>YJ-;dN@_&Z-KaFB4nR?AM ze7O`{N9|Vb8skj#QnR#ML<_gBQ!m!3T$Afg-7U+zitBpd(Cv1OZzo))29D6RE--?- zxJU0L;v$%$yNGTzM2TJ|$v5bt4{#+je)Ty-<^VDJ_6-c0zu=VyHyCiQJ*913_=tW} z=%(K>GLpt1GBlRQai1ikp(zybF>z#+XEM2CY6TC-#lz{9q{Hz~Ho(7efXkd;g8c4w znSw~S7sih)T;p^{f^_!>VCFH5+XQzZ2qaA6WFruP&6dj*Bm@;|> ziy8XfdWPF=`}`*bR3DcJG9P1Td$eWyQOou?t#UY`tsD&mD~A+COYw8s8o?KT0UiFv A?f?J) delta 903 zcmZ8dO>YuW6g_W%8JNC7Xt7vCi~RzI(iYpIwTh+1541(CwOX|*wnXp)l6I`s#B}M- zgv?G?F5F8>Y1G8HHvR?|{se!3@jgImoaD`Y_uPBWIrshaymzbLet-G`U;-;;^=({% zox$}myOAA!Y7`z1&u5FPr6(#Bs2n!5F<3(3MF%uE73|}1!Od{WOe*2>k51DjrDO#i z3^B7J$0A~EKSw9L3`#M#X{3t=gEf>6r&V;pr{ExmABPy?#1Qu}*w%B#LWyE1m1@Xz za|Cdt{Hw>Wp_ii%{ZxHcST*ttEbTxLy$V9+2=gv$&^aQaLC)t25Auen>JCyG;uyvV z4Q$d$$y0r_FnyvvCQALHDb8`M-t=7H6CxvA!z9N^TJgIy!%mwn%R9SpWuJ)zey zRYkNB#tBQ&IakAl3i5viR1yLv(M?P4kq27j_gdr;>Jv+_J$G^)Nd7a(T7y|?m2m$L DAlb!Y2P99j1OQ1XRyWQd2403>1}TQX$(gKL02$T`3IG5A delta 45 wcmbQtJ(+t$BnxB6Alb!Y2P99j1OQ1XRyWR22403R1}TP+$(gKL02_A;9{>OV 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 fb555f48b0537d1403d97bca52198411e64cd7c5..d721213c185d6911eb89840030ab654b8e8777cf 100644 GIT binary patch delta 928 zcmaiy%TE(g6vlsdrf+XYY!Rd)Rz%wlFL|gS3Mdan5ubplV2lvyMiQytEp?;KF$BPzwu;ZRXy4zH`3sJLk^)O8!X1zWx6A3Fzj|>)6|h zC=sGzVwxRj#jv*&%6T)vDsR%7b{uwwsnF~)slLCdq$0FfxLbI%7{wu}sbshJ-Kwv3 zsMhSEMiG3RpDoNQ)JT-QREMec;&ye~p-!{k6olsI^7rQpCR=Az>NN*x@KS0x9_28Z zFj-9w*ZZt`dejq98VvO}NZax=q!yE{F{MW|ZMahK)ZiT^65Qda<`~Dl=k|c=_P*Nh zIvsj6CrxQ!G5>7N)bwil3=ny^AoJuG9>h4!nJ@#IL537<-jdz6@+Oc_D_?>wDqv@G z6W-6zi=u-ijaZ}@<}8YHe$*w1T$P+df(2!@7?J2Dw*0|$8=KZq?t8*(#NAaA@>Eq+ z&aROvMf?0Hy)4x>=Vh%D9mtB7OPnSdv6)!-jHRKixP=}8Ck5&X^cx^e_77D zj9d}qsvs8E2ymTo$(RPG#Kf>Nr7jMva;TEVd#~1L-h^69Q2TPx*D&oleh2L&>5zBP z>36l^mnn6nm?-;<5%Yc0BHEeglGQkEY^}1Lkmu9~`px*3KYmPh=#r17dy954T^64# zi#JN48A5Hc&1-<(ElgD+THN?QacEoO6yuYkYwqozmZRG+ZEgz1;ug1M4~RsBX*roI LiO5CH^r!v+nay%7 delta 1102 zcmZ`$O-~b16g_YHF?4uSX^SEsLP3x+E!2t>LF7ZKw2GjJC@N^Bl@_5*=%DDPu5@QY zX6eeGfP5vA7}xIH`7hYGa$&r07%4F@$(#4?x%b?2-hDs4zkSO0KVQBA=)uyO@-Zr- zjGn zV~7wG2@2jxj#H>&kaOu(J(1HH?14mELP0fZWYluh;S596YEfp)N~)j1QAq2PdD;W9 zn9ys0Uq&NG6V5VRw~Fi6e$CXXXyG^~U}r&3>MI3dF2K=zLdHA(1BuHMomOFx)ev5khDvbaoQvpudDE zigxL2r#+zsLpxx*kf(Rx8q+qx+dZ~#+o*is?vd)mzKzq`XVh<@nX;|4f)$miErhM; zf*Exc*QuKg_vv3xuMGr9OM@Fhw9wc?2&0$g5=R6ND68$OV;T=BA|GN%% z<1%J2OFf?u$`5i+DVHQf!ZYeIhjPl$jf&LDVHOFCV)0ExE73dmVGDgFsNaHygkQ<@ z>n07L3qC|?R^6t*eZ5x8A4BS&4n34&%J`}0uy@1~(u$^FKZOZequUrS2`D54x=sW7 z4mI~5G*2Hi4^o{N0xOZly8%Ooh|D5NcwQnFk7LG1&~7Jd Q4R}E(1uk(^u{c=s7vfQ!TmS$7