From f8b69c9e162db8d0b249667df811fe284738413e Mon Sep 17 00:00:00 2001 From: agreiner Date: Thu, 22 Apr 2021 13:43:32 +0200 Subject: [PATCH] Aufgaben 5 --- .../superpangworld/game/GameLoopManager.java | 16 ++++++++-------- .../{game => gameview}/GameView.java | 2 +- .../superpangworld/graphics/Background.java | 19 +++++++++++++++++++ .../{objects => graphics}/Bubble.java | 6 ++---- .../{objects => graphics}/GameObject.java | 4 ++-- .../{objects => graphics}/Harpoon.java | 6 ++---- .../graphics/HexagonalBubble.java | 18 ++++++++++++++++++ .../{objects => graphics}/LevelLabel.java | 4 ++-- .../LevelProgressBar.java | 6 ++---- .../superpangworld/graphics/LivesIcon.java | 17 +++++++++++++++++ .../superpangworld/graphics/LivesLabe.java | 18 ++++++++++++++++++ .../Spielfigur.java => graphics/Player.java} | 12 ++++++------ .../{objects => graphics}/Position.java | 2 +- .../superpangworld/graphics/RoundBubble.java | 19 +++++++++++++++++++ .../{objects => graphics}/ScoreLabel.java | 4 ++-- .../graphics/SpecialBubble.java | 18 ++++++++++++++++++ 16 files changed, 137 insertions(+), 34 deletions(-) rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{game => gameview}/GameView.java (99%) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Background.java rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects => graphics}/Bubble.java (94%) rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects => graphics}/GameObject.java (91%) rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects => graphics}/Harpoon.java (90%) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/HexagonalBubble.java rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects => graphics}/LevelLabel.java (90%) rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects => graphics}/LevelProgressBar.java (94%) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesIcon.java create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesLabe.java rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects/Spielfigur.java => graphics/Player.java} (88%) rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects => graphics}/Position.java (97%) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/RoundBubble.java rename SuperPangWorld/src/de/thdeg/greiner/superpangworld/{objects => graphics}/ScoreLabel.java (88%) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/SpecialBubble.java diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/GameLoopManager.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/GameLoopManager.java index 1bdddfd..44e421a 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/GameLoopManager.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/GameLoopManager.java @@ -1,10 +1,10 @@ package de.thdeg.greiner.superpangworld.game; -import de.thdeg.greiner.superpangworld.objects.*; +import de.thdeg.greiner.superpangworld.gameview.GameView; +import de.thdeg.greiner.superpangworld.graphics.*; import java.awt.*; import java.awt.event.KeyEvent; -import java.security.Key; import java.util.Arrays; /** Der Manager zur Verwaltung der Spielschleife. */ @@ -20,7 +20,7 @@ public class GameLoopManager { private LevelLabel levelLabel; private ScoreLabel scoreLabel; - private Spielfigur spielfigur; + private Player player; /** Erzeugt den GameLoopManager mit Standardwerten. */ public GameLoopManager() { @@ -36,7 +36,7 @@ public class GameLoopManager { this.levelLabel = new LevelLabel(gameView); this.scoreLabel = new ScoreLabel(gameView); - this.spielfigur = new Spielfigur(gameView); + this.player = new Player(gameView); gameView.setColorForBlockImage('k',Color.LIGHT_GRAY); } @@ -55,7 +55,7 @@ public class GameLoopManager { levelLabel.addToCanvas(); scoreLabel.addToCanvas(); - spielfigur.addToCanvas(); + player.addToCanvas(); gameView.printCanvas(); } @@ -64,15 +64,15 @@ public class GameLoopManager { void updateUserInputs() { Integer[] gedruekteTasten = gameView.getKeyCodesOfCurrentlyPressedKeys(); if(Arrays.stream(gedruekteTasten).anyMatch(k -> k == KeyEvent.VK_SPACE)){ - spielfigur.shoot(); + player.shoot(); } for (int keyCode : gedruekteTasten) { switch(keyCode) { case KeyEvent.VK_LEFT: - spielfigur.left(); + player.left(); break; case KeyEvent.VK_RIGHT: - spielfigur.right(); + player.right(); break; default: continue; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/GameView.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/gameview/GameView.java similarity index 99% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/GameView.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/gameview/GameView.java index e69d0ed..89d1131 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/game/GameView.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/gameview/GameView.java @@ -1,4 +1,4 @@ -package de.thdeg.greiner.superpangworld.game; +package de.thdeg.greiner.superpangworld.gameview; import javax.imageio.ImageIO; import javax.sound.sampled.*; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Background.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Background.java new file mode 100644 index 0000000..f7e26ec --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Background.java @@ -0,0 +1,19 @@ +package de.thdeg.greiner.superpangworld.graphics; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + +/** + * The background for the game. + */ +public class Background extends GameObject{ + + + /** + * Create a background object. + * + * @param gameView the gameView + */ + protected Background(GameView gameView) { + super(gameView); + } +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Bubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Bubble.java similarity index 94% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Bubble.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Bubble.java index 16f7000..396fdab 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Bubble.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Bubble.java @@ -1,8 +1,6 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; -import de.thdeg.greiner.superpangworld.game.GameView; - -import java.awt.*; +import de.thdeg.greiner.superpangworld.gameview.GameView; /** * A Bubble, which moves around on the screen and can be shot by the player. diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/GameObject.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/GameObject.java similarity index 91% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/GameObject.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/GameObject.java index 82b27ee..fbff9be 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/GameObject.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/GameObject.java @@ -1,6 +1,6 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; -import de.thdeg.greiner.superpangworld.game.GameView; +import de.thdeg.greiner.superpangworld.gameview.GameView; /** * A basic game object. diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Harpoon.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Harpoon.java similarity index 90% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Harpoon.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Harpoon.java index 49da869..7c59688 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Harpoon.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Harpoon.java @@ -1,8 +1,6 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; -import de.thdeg.greiner.superpangworld.game.GameView; - -import java.awt.*; +import de.thdeg.greiner.superpangworld.gameview.GameView; /** * A harpoon which can be fired upwards by the player. diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/HexagonalBubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/HexagonalBubble.java new file mode 100644 index 0000000..7be4227 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/HexagonalBubble.java @@ -0,0 +1,18 @@ +package de.thdeg.greiner.superpangworld.graphics; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + +/** + * The rare hexagonal bubble. + */ +public class HexagonalBubble extends Bubble{ + + /** + * Create a hexagonal bubble with default values. + * + * @param gameView the {@link GameView} to display the bubble + */ + public HexagonalBubble(GameView gameView) { + super(gameView); + } +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/LevelLabel.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LevelLabel.java similarity index 90% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/LevelLabel.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LevelLabel.java index 1a38a2f..bbe95d2 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/LevelLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LevelLabel.java @@ -1,6 +1,6 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; -import de.thdeg.greiner.superpangworld.game.GameView; +import de.thdeg.greiner.superpangworld.gameview.GameView; import java.awt.*; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/LevelProgressBar.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LevelProgressBar.java similarity index 94% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/LevelProgressBar.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LevelProgressBar.java index 52c59d3..f897502 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/LevelProgressBar.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LevelProgressBar.java @@ -1,8 +1,6 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; -import de.thdeg.greiner.superpangworld.game.GameView; - -import java.awt.*; +import de.thdeg.greiner.superpangworld.gameview.GameView; /** * The progress bar of a level. diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesIcon.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesIcon.java new file mode 100644 index 0000000..7439dbf --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesIcon.java @@ -0,0 +1,17 @@ +package de.thdeg.greiner.superpangworld.graphics; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + +/** + * The icon to display the remaining lives. + */ +public class LivesIcon extends GameObject{ + /** + * Create a game object with default values. + * + * @param gameView the gameView + */ + protected LivesIcon(GameView gameView) { + super(gameView); + } +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesLabe.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesLabe.java new file mode 100644 index 0000000..541e834 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/LivesLabe.java @@ -0,0 +1,18 @@ +package de.thdeg.greiner.superpangworld.graphics; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + +/** + * The label for the remaining lives count. + */ +public class LivesLabe extends GameObject{ + + /** + * Create a lives label with default values. + * + * @param gameView the gameView + */ + protected LivesLabe(GameView gameView) { + super(gameView); + } +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Spielfigur.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Player.java similarity index 88% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Spielfigur.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Player.java index e785341..2aa739a 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Spielfigur.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Player.java @@ -1,20 +1,20 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; -import de.thdeg.greiner.superpangworld.game.GameView; +import de.thdeg.greiner.superpangworld.gameview.GameView; import java.awt.*; /** * The game character controlled by the player. */ -public class Spielfigur extends GameObject{ +public class Player extends GameObject{ /** Flag, if the player is shooting */ private boolean shooting; /** Debug flag, to display X and O or the real image */ - private static boolean SHOW_X = false; + private static final boolean SHOW_X = false; /** The pixel art of the character */ - private static String SPIELFIGUR = + private static final String SPIELFIGUR = " kkk \n"+ " BBBBk \n"+ " BBBBBB \n"+ @@ -37,7 +37,7 @@ public class Spielfigur extends GameObject{ * Create the game character with default values * @param gameView the {@link GameView} to display the character */ - public Spielfigur(GameView gameView){ + public Player(GameView gameView){ super(gameView); position.setTo(GameView.WIDTH/2, GameView.HEIGHT/2); shooting = false; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Position.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Position.java similarity index 97% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Position.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Position.java index cc61728..d8c5d9b 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/Position.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/Position.java @@ -1,4 +1,4 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; /** * Die Position eines Objekts auf einem Fenster anhand zweidimensionaler Koordinaten. diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/RoundBubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/RoundBubble.java new file mode 100644 index 0000000..6e46eca --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/RoundBubble.java @@ -0,0 +1,19 @@ +package de.thdeg.greiner.superpangworld.graphics; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + + +/** + * The classic red, round bubble. + */ +public class RoundBubble extends Bubble{ + + /** + * Create a round bubble with default values. + * + * @param gameView the {@link GameView} to display the bubble + */ + public RoundBubble(GameView gameView) { + super(gameView); + } +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/ScoreLabel.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/ScoreLabel.java similarity index 88% rename from SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/ScoreLabel.java rename to SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/ScoreLabel.java index b6c39af..0044269 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/objects/ScoreLabel.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/ScoreLabel.java @@ -1,6 +1,6 @@ -package de.thdeg.greiner.superpangworld.objects; +package de.thdeg.greiner.superpangworld.graphics; -import de.thdeg.greiner.superpangworld.game.GameView; +import de.thdeg.greiner.superpangworld.gameview.GameView; import java.awt.*; diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/SpecialBubble.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/SpecialBubble.java new file mode 100644 index 0000000..8397f96 --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/SpecialBubble.java @@ -0,0 +1,18 @@ +package de.thdeg.greiner.superpangworld.graphics; + +import de.thdeg.greiner.superpangworld.gameview.GameView; + +/** + * The green bubble with special abilities. + */ +public class SpecialBubble extends Bubble{ + + /** + * Create a special bubble with default values. + * + * @param gameView the {@link GameView} to display the bubble + */ + public SpecialBubble(GameView gameView) { + super(gameView); + } +}