Praktikum 5

This commit is contained in:
Andreas Greiner 2021-04-26 19:52:51 +02:00
parent 70d431a32d
commit 973a4e9710
59 changed files with 172 additions and 40 deletions

View File

@ -1,3 +1,3 @@
Manifest-Version: 1.0
Main-Class: de.thdeg.greiner.superpangworld.game.Start
Main-Class: de.thdeg.greiner.superpangworld.game.bin.Start

View File

@ -1,6 +1,6 @@
package de.thdeg.greiner.superpangworld.game;
package de.thdeg.greiner.superpangworld.game.bin;
import de.thdeg.greiner.superpangworld.managers.GameLoopManager;
import de.thdeg.greiner.superpangworld.game.managers.GameLoopManager;
/**
* Die Startklasse für das Spiel.

View File

@ -1,9 +1,6 @@
package de.thdeg.greiner.superpangworld.managers;
package de.thdeg.greiner.superpangworld.game.managers;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.managers.GameObjectManager;
import de.thdeg.greiner.superpangworld.managers.GamePlayManager;
import de.thdeg.greiner.superpangworld.managers.InputManager;
/** This class manages the main game loop of the game. */
public class GameLoopManager {

View File

@ -1,4 +1,4 @@
package de.thdeg.greiner.superpangworld.managers;
package de.thdeg.greiner.superpangworld.game.managers;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.immovable.*;
@ -9,7 +9,7 @@ import java.awt.*;
/**
* The manager handling the display and passive movement of the game objects.
*/
public class GameObjectManager {
class GameObjectManager {
/** The GameView to display the objects */
private GameView gameView;

View File

@ -1,4 +1,4 @@
package de.thdeg.greiner.superpangworld.managers;
package de.thdeg.greiner.superpangworld.game.managers;
import de.thdeg.greiner.superpangworld.gameview.GameView;

View File

@ -1,4 +1,4 @@
package de.thdeg.greiner.superpangworld.managers;
package de.thdeg.greiner.superpangworld.game.managers;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.moveable.Player;
@ -9,7 +9,7 @@ import java.util.Arrays;
/**
* The manager which handles the user input and controls the player object.
*/
public class InputManager {
class InputManager {
/** The gameView, which displays the player object */
private GameView gameView;

View File

@ -1,12 +1,12 @@
package de.thdeg.greiner.superpangworld.graphics.base;
import de.thdeg.greiner.superpangworld.managers.GamePlayManager;
import de.thdeg.greiner.superpangworld.game.managers.GamePlayManager;
import de.thdeg.greiner.superpangworld.gameview.GameView;
/**
* A basic game object.
*/
class GameObject {
public abstract class GameObject {
/** The game view to display the game object on. */
protected final GameView gameView;

View File

@ -1,6 +1,9 @@
package de.thdeg.greiner.superpangworld.graphics;
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.
@ -8,12 +11,36 @@ import de.thdeg.greiner.superpangworld.gameview.GameView;
public class Background extends GameObject {
private final String pixelArt;
/**
* Create a background object.
*
* @param gameView the gameView
*/
protected Background(GameView gameView) {
public Background(GameView gameView) {
super(gameView);
this.position.setTo(0,0);
size = 1;
rotation = 0;
Random r = new Random();
StringBuilder sb = new StringBuilder();
for(int h=0;h<450;h++){
for(int i=0;i<960;i++){
if(r.nextBoolean()){
sb.append("y");
}else{
sb.append("o");
}
}
sb.append("\n");
}
pixelArt = sb.toString();
}
@Override
public void addToCanvas() {
gameView.addBlockImageToCanvas(pixelArt,position.x,position.y,size, rotation);
}
}

View File

@ -1,6 +1,7 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.immovable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.GameObject;
import java.awt.*;

View File

@ -1,6 +1,7 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.immovable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.GameObject;
/**
* The progress bar of a level.

View File

@ -1,17 +1,41 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.immovable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.GameObject;
/**
* The icon to display the remaining lives.
*/
public class LivesIcon extends GameObject {
private final static String ICON =
" RR RR \n"+
" RRRR RRRR \n"+
"RRRRRRRRRRR\n"+
"RRRRRRRRRRR\n"+
" RRRRRRRRR \n"+
" RRRRRRR \n"+
" RRRRR \n"+
" RRR \n"+
" R \n";
/**
* Create a game object with default values.
* Create lives icon.
*
* @param gameView the gameView
*/
protected LivesIcon(GameView gameView) {
public LivesIcon(GameView gameView) {
super(gameView);
rotation = 0;
size = 5;
width = 12;
height = 12;
position.setTo(50,GameView.HEIGHT-50);
}
@Override
public void addToCanvas() {
gameView.addBlockImageToCanvas(ICON,position.x,position.y,size,rotation);
}
}

View File

@ -1,6 +1,7 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.immovable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.GameObject;
import java.awt.*;

View File

@ -1,6 +1,8 @@
package de.thdeg.greiner.superpangworld.graphics;
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.GameObject;
/**
* A harpoon which can be fired upwards by the player.
@ -20,7 +22,7 @@ public class Harpoon extends GameObject{
*/
public Harpoon(GameView gameView){
super(gameView);
speedInPixel = 10;
speedInPixel = 1;
size = 3;
width = 11;
height = 11;
@ -47,5 +49,8 @@ public class Harpoon extends GameObject{
@Override
public void updatePosition(){
getPosition().up(speedInPixel);
if(getPosition().y < 0){
getPosition().setTo(300,300);
}
}
}

View File

@ -1,6 +1,7 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.moveable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.Bubble;
/**
* The rare hexagonal bubble.
@ -14,5 +15,19 @@ public class HexagonalBubble extends Bubble{
*/
public HexagonalBubble(GameView gameView) {
super(gameView);
position.setTo(100,200);
size=0.6;
speedInPixel = 2;
}
@Override
public void addToCanvas() {
gameView.addImageToCanvas("hexagon.png",position.x,position.y,size,rotation);
}
@Override
public void updatePosition() {
super.updatePosition();
rotation = (rotation + 1) % 360;
}
}

View File

@ -1,6 +1,7 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.moveable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.GameObject;
import java.awt.*;
@ -39,7 +40,7 @@ public class Player extends GameObject{
*/
public Player(GameView gameView){
super(gameView);
position.setTo(GameView.WIDTH/2, GameView.HEIGHT/2);
position.setTo(GameView.WIDTH/2, GameView.HEIGHT/1.5);
shooting = false;
size = 3;
width = (int) size * 12;

View File

@ -1,6 +1,7 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.moveable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.Bubble;
/**
@ -8,6 +9,21 @@ import de.thdeg.greiner.superpangworld.gameview.GameView;
*/
public class RoundBubble extends Bubble {
/** The pixel art for the bubble */
private final static String RED_BUBBLE =
" RRRR \n"+
" RWRRRR \n"+
" RWRRRRRR \n"+
" RWRRRRRRRR \n"+
"RWRRRRRRRRRR\n"+
"RWRRRRRRRRRR\n"+
"RWRRRRRRRRWR\n"+
"RRRRRRRRRWWR\n"+
" RRRRRRRWWR \n"+
" RRRRRWWR \n"+
" RRRWWR \n"+
" RRRR \n";
/**
* Create a round bubble with default values.
*
@ -16,4 +32,12 @@ public class RoundBubble extends Bubble{
public RoundBubble(GameView gameView) {
super(gameView);
}
/**
* Draws the bubble onto the canvas of the {@link GameView}.
*/
@Override
public void addToCanvas(){
gameView.addBlockImageToCanvas(RED_BUBBLE, getPosition().x, getPosition().y,size, rotation);
}
}

View File

@ -1,12 +1,28 @@
package de.thdeg.greiner.superpangworld.graphics;
package de.thdeg.greiner.superpangworld.graphics.moveable;
import de.thdeg.greiner.superpangworld.gameview.GameView;
import de.thdeg.greiner.superpangworld.graphics.base.Bubble;
/**
* The green bubble with special abilities.
*/
public class SpecialBubble extends Bubble {
/** The pixel art for the bubble */
private final static String GREEN_BUBBLE =
" GGGG \n"+
" GWGGGG \n"+
" GWGGGGGG \n"+
" GWGGGGGGGG \n"+
"GWGGGGGGGGGG\n"+
"GWGGGGGGGGGG\n"+
"GWGGGGGGGGWG\n"+
"GGGGGGGGGWWG\n"+
" GGGGGGGWWG \n"+
" GGGGGWWG \n"+
" GGGWWG \n"+
" GGGG \n";
/**
* Create a special bubble with default values.
*
@ -14,5 +30,25 @@ public class SpecialBubble extends Bubble{
*/
public SpecialBubble(GameView gameView) {
super(gameView);
position.setTo(100, 100);
}
@Override
public void addToCanvas() {
gameView.addBlockImageToCanvas(GREEN_BUBBLE,position.x,position.y,size, rotation);
}
/**
* Switches the active effect.
*/
private void switchEffect(){
}
/**
* Activates the current effect.
*/
private void activateEffect(){
}
}

View File

@ -1,3 +1,3 @@
Manifest-Version: 1.0
Main-Class: de.thdeg.greiner.superpangworld.game.Start
Main-Class: de.thdeg.greiner.superpangworld.game.bin.Start

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 641 B