Aufgaben 5

This commit is contained in:
Andreas Greiner 2021-04-22 13:43:32 +02:00
parent b4d721cdb1
commit f8b69c9e16
16 changed files with 137 additions and 34 deletions

View File

@ -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;

View File

@ -1,4 +1,4 @@
package de.thdeg.greiner.superpangworld.game;
package de.thdeg.greiner.superpangworld.gameview;
import javax.imageio.ImageIO;
import javax.sound.sampled.*;

View File

@ -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);
}
}

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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);
}
}

View File

@ -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.*;

View File

@ -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.

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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.

View File

@ -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);
}
}

View File

@ -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.*;

View File

@ -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);
}
}