Initial sharing of project

This commit is contained in:
burkart
2023-10-16 15:09:46 +02:00
commit aa2592086d
15 changed files with 1140 additions and 0 deletions

21
Block.java Normal file
View File

@@ -0,0 +1,21 @@
import java.awt.*;
/**
* Beschreiben Sie hier die Klasse Wand.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Block extends Spielobjekt
{
public Block(int x, int y){
super(x,y);
}
@Override
public void render(Graphics2D g, int SpielobjektGröße){
g.setColor(Color.BLUE);
g.fillRect(x*SpielobjektGröße,y*SpielobjektGröße,SpielobjektGröße,SpielobjektGröße);
}
}

31
Display.java Normal file
View File

@@ -0,0 +1,31 @@
import javax.swing.*;
import java.awt.*;
/**
* Beschreiben Sie hier die Klasse Display.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Display extends JPanel
{
private final Spiel spiel;
public Display(Spiel spiel){
super();
this.spiel = spiel;
spiel.add(this);
}
@Override
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
spiel.render(g2);
}
}

12
GameObject.java Normal file
View File

@@ -0,0 +1,12 @@
import java.awt.*;
/**
* Beschreiben Sie hier die Klasse GameObject.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public abstract class GameObject
{
public abstract void render(Graphics2D g,int SpielobjektGröße);
}

96
GeistGegner.java Normal file
View File

@@ -0,0 +1,96 @@
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
/**
* Beschreiben Sie hier die Klasse PacMan.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class GeistGegner extends Spielfiguren implements KeyListener
{
protected PacMan pacman;
GeistGegner(Spiel spiel, double centerX, double centerY, double radius, double Geschwindigkeit){
super(spiel, centerX, centerY, radius, Geschwindigkeit, Color.RED);
}
public void tickSpielerkollision() {
int x = (int) centerX;
int y = (int) centerY;
double dx = pacman.getCenterX() - centerX;
double dy = pacman.getCenterY() - centerY;
double r = pacman.getRadius() + radius;
if (dx * dx + dy * dy < r * r) {
spiel.lose();
}
}
private void tickPunktKollision(){
int x = (int) centerX;
int y = (int) centerY;
if(spiel.getLabyrinth().getSpielobjekt(x,y) instanceof Punkt punkt){
double dx = punkt.getCenterX() - centerX;
double dy = punkt.getCenterY() - centerY;
double r = punkt.getRadius() + radius;
if (dx * dy + dy * dx < r * r){
spiel.getLabyrinth().setSpielobjekt(x, y, new Nichts(x, y));
if (spiel.getLabyrinth().PunkteZaehler() == 0) {
spiel.win();
}
}
}
}
@Override
public void keyTyped(KeyEvent e){
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_T) {
bevorzugteRichtungX = 0;
bevorzugteRichtungY = -1;
}else if (keyCode == KeyEvent.VK_F) {
bevorzugteRichtungX = -1;
bevorzugteRichtungY = 0;
}else if (keyCode == KeyEvent.VK_G) {
bevorzugteRichtungX = 0;
bevorzugteRichtungY = 1;
}else if (keyCode == KeyEvent.VK_H) {
bevorzugteRichtungX = 1;
bevorzugteRichtungY = 0;
}
}
@Override
public void keyReleased(KeyEvent e){
}
@Override
public void tick(){
super.tick();
}
@Override
public void render(Graphics2D g, int SpielobjektGröße){
double centerXOnScreen = centerX * SpielobjektGröße;
double centerYOnScreen = centerY* SpielobjektGröße;
double radiusOnScreen = radius * SpielobjektGröße;
double diameterOnScreen = radiusOnScreen * 2.0;
g.setColor(color);
g.fill(new Rectangle2D.Double(centerXOnScreen - radiusOnScreen, centerYOnScreen - radiusOnScreen, diameterOnScreen, diameterOnScreen));
}
}

97
GeistGegner2.java Normal file
View File

@@ -0,0 +1,97 @@
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
/**
* Beschreiben Sie hier die Klasse PacMan.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class GeistGegner2 extends Spielfiguren implements KeyListener
{
protected PacMan pacman;
GeistGegner2(Spiel spiel, double centerX, double centerY, double radius, double Geschwindigkeit){
super(spiel, centerX, centerY, radius, Geschwindigkeit, Color.BLUE);
}
public void tickSpielerkollision() {
int x = (int) centerX;
int y = (int) centerY;
double dx = pacman.getCenterX() - centerX;
double dy = pacman.getCenterY() - centerY;
double r = pacman.getRadius() + radius;
if (dx * dx + dy * dy < r * r) {
spiel.lose();
}
}
private void tickPunktKollision(){
int x = (int) centerX;
int y = (int) centerY;
if(spiel.getLabyrinth().getSpielobjekt(x,y) instanceof Punkt punkt){
double dx = punkt.getCenterX() - centerX;
double dy = punkt.getCenterY() - centerY;
double r = punkt.getRadius() + radius;
if (dx * dy + dy * dx < r * r){
spiel.getLabyrinth().setSpielobjekt(x, y, new Nichts(x, y));
if (spiel.getLabyrinth().PunkteZaehler() == 0) {
spiel.win();
}
}
}
}
@Override
public void keyTyped(KeyEvent e){
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_UP) {
bevorzugteRichtungX = 0;
bevorzugteRichtungY = -1;
}else if (keyCode == KeyEvent.VK_LEFT) {
bevorzugteRichtungX = -1;
bevorzugteRichtungY = 0;
}else if (keyCode == KeyEvent.VK_DOWN) {
bevorzugteRichtungX = 0;
bevorzugteRichtungY = 1;
}else if (keyCode == KeyEvent.VK_RIGHT) {
bevorzugteRichtungX = 1;
bevorzugteRichtungY = 0;
}
}
@Override
public void keyReleased(KeyEvent e){
}
@Override
public void tick(){
super.tick();
}
@Override
public void render(Graphics2D g, int SpielobjektGröße){
double centerXOnScreen = centerX * SpielobjektGröße;
double centerYOnScreen = centerY* SpielobjektGröße;
double radiusOnScreen = radius * SpielobjektGröße;
double diameterOnScreen = radiusOnScreen * 2.0;
g.setColor(color);
g.fill(new Rectangle2D.Double(centerXOnScreen - radiusOnScreen, centerYOnScreen - radiusOnScreen, diameterOnScreen, diameterOnScreen));
}
}

112
Labyrinth.java Normal file
View File

@@ -0,0 +1,112 @@
import java.awt.*;
/**
* Beschreiben Sie hier die Klasse Labyrinth.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Labyrinth extends GameObject
{
private static final int[][] MAP = {
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1},
{1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 1},
{1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 0, 2, 2, 2, 0, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 1},
{1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1},
{1, 2, 2, 2, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 1, 2, 2, 2, 1},
{1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1},
{1, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 1},
{1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1},
{1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1},
{1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 1},
{1, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1},
{1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1},
{1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1},
{1, 2, 1, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 1},
{1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 1},
{1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};
private final int SpielobjektGröße;
Spielobjekt[][]Spielobjekte;
Labyrinth(int SpielobjektGröße){
this.SpielobjektGröße = SpielobjektGröße;
Spielobjekte = new Spielobjekt[MAP.length][MAP[0].length];
zuruecksetzen();
}
public void zuruecksetzen(){
for(int y = 0; y < getHöhe(); y++){
for(int x = 0; x < getBreite(); x++){
int SpielobjektID = MAP[y][x];
if(SpielobjektID == 0){
Spielobjekte[y][x] = new Nichts(x,y);
}else if(SpielobjektID == 1){
Spielobjekte[y][x] = new Block(x,y);
}else if(SpielobjektID == 2){
Spielobjekte[y][x] = new Punkt(x,y);
}
}
}
}
public void render(Graphics2D g, int SpielobjektGröße){
for(Spielobjekt[] row: Spielobjekte){
for(Spielobjekt spielobjekt: row){
spielobjekt.render(g, SpielobjektGröße);
}
}
}
public int PunkteZaehler(){
int sum = 0;
for (Spielobjekt[] reihe : Spielobjekte){
for (Spielobjekt spielobjekt : reihe){
if (spielobjekt instanceof Punkt){
sum++;
}
}
}
return sum;
}
public boolean isFrei(int x, int y){
if(x < 0){
return false;
}else if(y < 0){
return false;
}else if(x >= getBreite()){
return false;
}else if(y >= getHöhe()){
return false;
}
return !(Spielobjekte[y][x] instanceof Block);
}
public int getBreite(){
return Spielobjekte[0].length;
}
public int getHöhe(){
return Spielobjekte.length;
}
public int getSpielobjektGröße(){
return SpielobjektGröße;
}
public Spielobjekt getSpielobjekt(int x, int y){
return Spielobjekte[y][x];
}
public void setSpielobjekt(int x, int y, Spielobjekt spielobjekt){
Spielobjekte[y][x] = spielobjekt;
}
}

18
Nichts.java Normal file
View File

@@ -0,0 +1,18 @@
import java.awt.*;
/**
* Beschreiben Sie hier die Klasse Nichts.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Nichts extends Spielobjekt
{
Nichts(int x, int y){
super(x,y);
}
public void render(Graphics2D g, int SpielobjektGröße){
}
}

83
PacMan.java Normal file
View File

@@ -0,0 +1,83 @@
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
/**
* Beschreiben Sie hier die Klasse PacMan.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class PacMan extends Spielfiguren implements KeyListener
{
PacMan(Spiel spiel, double centerX, double centerY, double radius, double Geschwindigkeit){
super(spiel, centerX, centerY, radius, Geschwindigkeit, Color.YELLOW);
}
private void tickPunktKollision(){
int x = (int) centerX;
int y = (int) centerY;
if(spiel.getLabyrinth().getSpielobjekt(x,y) instanceof Punkt punkt){
double dx = punkt.getCenterX() - centerX;
double dy = punkt.getCenterY() - centerY;
double r = punkt.getRadius() + radius;
if (dx * dy + dy * dx < r * r){
spiel.getLabyrinth().setSpielobjekt(x, y, new Nichts(x, y));
if (spiel.getLabyrinth().PunkteZaehler() == 0) {
spiel.win();
}
}
}
}
@Override
public void tick(){
super.tick();
tickPunktKollision();
}
@Override
public void render(Graphics2D g, int SpielobjektGröße){
double centerXOnScreen = centerX * SpielobjektGröße;
double centerYOnScreen = centerY* SpielobjektGröße;
double radiusOnScreen = radius * SpielobjektGröße;
double diameterOnScreen = radiusOnScreen * 2.0;
g.setColor(color);
g.fill(new Ellipse2D.Double(centerXOnScreen - radiusOnScreen, centerYOnScreen - radiusOnScreen, diameterOnScreen, diameterOnScreen));
}
@Override
public void keyTyped(KeyEvent e){
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_W) {
bevorzugteRichtungX = 0;
bevorzugteRichtungY = -1;
}else if (keyCode == KeyEvent.VK_A) {
bevorzugteRichtungX = -1;
bevorzugteRichtungY = 0;
}else if (keyCode == KeyEvent.VK_S) {
bevorzugteRichtungX = 0;
bevorzugteRichtungY = 1;
}else if (keyCode == KeyEvent.VK_D) {
bevorzugteRichtungX = 1;
bevorzugteRichtungY = 0;
}
}
@Override
public void keyReleased(KeyEvent e){
}
}

44
Punkt.java Normal file
View File

@@ -0,0 +1,44 @@
import java.awt.*;
import java.awt.geom.Ellipse2D;
/**
* Beschreiben Sie hier die Klasse Punkt.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Punkt extends Spielobjekt
{
double radius;
Punkt(int x, int y, double radius){
super(x,y);
this.radius = radius;
}
public Punkt(int x, int y){
this(x,y, 0.125);
}
@Override
public void render(Graphics2D g, int SpielobjektGröße){
double centerXOnScreen = getCenterX() * SpielobjektGröße;
double centerYOnScreen = getCenterY()* SpielobjektGröße;
double radiusOnScreen = radius * SpielobjektGröße;
double diameterOnScreen = radiusOnScreen * 2.0;
g.setColor(Color.YELLOW);
g.fill(new Ellipse2D.Double(centerXOnScreen - radiusOnScreen, centerYOnScreen - radiusOnScreen, diameterOnScreen, diameterOnScreen));
}
public double getCenterX(){
return x + 0.5;
}
public double getCenterY(){
return y + 0.5;
}
public double getRadius(){
return radius;
}
}

24
README.TXT Normal file
View File

@@ -0,0 +1,24 @@
PROJEKTBEZEICHNUNG: Grafikdokument
PROJEKTZWECK:
Ein erstes Einstiegsprojekt in die Entwicklungsumgebung BlueJ.
Dient zur Wiederholung der Begriffe Klasse, Objekt, Attribut, Methode, etc.
aus dem Informatikunterricht der Unterstufe.
Man kann verschiedene Figuren erzeugen, die mit ihrem zugehörigen Grafiksymbol
in einem Grafikfenster eingezeichnet werden.
Diese Figuren können, durch den Aufruf von Methoden interaktiv verändert werden.
Nach jedem Methodenaufruf wird das Grafiksymbol und damit die ganze Zeichnung
automatisch angepasst.
WIE IST DAS PROJEKT ZU STARTEN:
Erzeugen neuer Figur-Objekte über das Kontextmenü.
VERSION:
1.0
AUTOR(EN):
U.Freiberger

102
Spiel.java Normal file
View File

@@ -0,0 +1,102 @@
import javax.swing.*;
import java.awt.*;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/**
* Beschreiben Sie hier die Klasse Spiel.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Spiel extends JFrame
{
private final Display display;
private final Labyrinth labyrinth;
private final PacMan pacman;
private final GeistGegner geistgegner;
private final GeistGegner2 geistgegner2;
private boolean won;
Spiel(){
super("Game");
display = new Display(this);
labyrinth = new Labyrinth(40);
pacman = new PacMan(this, 13.5, 10.5, 0.375, 0.07);
addKeyListener(pacman);
geistgegner = new GeistGegner(this,12.5, 8.5, 0.375, 0.06);
addKeyListener(geistgegner);
geistgegner2 = new GeistGegner2(this,14.5, 8.5, 0.375, 0.06);
addKeyListener(geistgegner2);
setSize(1096, 759);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
startSpielLoop();
}
private void startSpielLoop(){
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(()-> {tick();display.repaint();}, 0L, 1000L / 60L, TimeUnit.MILLISECONDS);
}
private void zuruecksetzen(){
won = false;
labyrinth.zuruecksetzen();
pacman.zuruecksetzen();
geistgegner.zuruecksetzen();
geistgegner2.zuruecksetzen();
}
public void win() {
won = true;
}
public void lose(){
JOptionPane.showMessageDialog(null, "Game Over!");
zuruecksetzen();
}
private void tick(){
if (won) {
JOptionPane.showMessageDialog(null, "Du hast gewonnen!");
zuruecksetzen();
}
pacman.tick();
geistgegner.tick();
geistgegner2.tick();
}
public void render(Graphics2D g2){
g2.setColor(Color.BLACK);
g2.fillRect(0,0,getWidth(), getHeight());
labyrinth.render(g2, labyrinth.getSpielobjektGröße());
pacman.render(g2, labyrinth.getSpielobjektGröße());
geistgegner.render(g2, labyrinth.getSpielobjektGröße());
geistgegner2.render(g2, labyrinth.getSpielobjektGröße());
}
public Labyrinth getLabyrinth(){
return labyrinth;
}
public GeistGegner getGegner() {
return geistgegner;
}
}

127
Spielfiguren.java Normal file
View File

@@ -0,0 +1,127 @@
import java.awt.*;
import java.awt.geom.Ellipse2D;
/**
* Beschreiben Sie hier die Klasse Spielfiguren.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public abstract class Spielfiguren extends GameObject
{
protected final Spiel spiel;
protected double centerX;
protected double centerY;
protected final double radius;
protected final double Geschwindigkeit;
protected Color color;
protected int bevorzugteRichtungX;
protected int bevorzugteRichtungY;
protected int bewegteRichtungX;
protected int bewegteRichtungY;
private final double initialX;
private final double initialY;
public Spielfiguren(Spiel spiel, double centerX, double centerY, double radius, double Geschwindigkeit, Color color){
this.spiel = spiel;
this.centerX = centerX;
this.centerY = centerY;
this.radius = radius;
this.Geschwindigkeit = Geschwindigkeit;
this.color = color;
initialX = centerX;
initialY = centerY;
}
public void zuruecksetzen(){
centerX = initialX;
centerY = initialY;
bevorzugteRichtungX= 0;
bevorzugteRichtungY = 0;
bewegteRichtungX = 0;
bewegteRichtungY = 0;
}
public void tickBewegteRichtung(){
if(bewegteRichtungX == 0 && bewegteRichtungY == 0){
bewegteRichtungX = bevorzugteRichtungX;
bewegteRichtungY = bevorzugteRichtungY;
}else if(bewegteRichtungX != 0 && bevorzugteRichtungX != 0){
bewegteRichtungX = bevorzugteRichtungX;
}else if(bewegteRichtungY != 0 && bevorzugteRichtungY != 0){
bewegteRichtungY = bevorzugteRichtungY;
}
}
public void tickWallCollisions(){
Labyrinth labyrinth = spiel.getLabyrinth();
if(bewegteRichtungX == 1 && !labyrinth.isFrei((int) (centerX + 0.5), (int) centerY)){
centerX = (int) centerX + 0.5;
bewegteRichtungX = 0;
}else if(bewegteRichtungX == -1 && !labyrinth.isFrei((int) (centerX -0.5), (int) centerY)){
centerX = (int) centerX + 0.5;
bewegteRichtungX = 0;
}else if(bewegteRichtungY == 1 && !labyrinth.isFrei((int) centerX, (int) (centerY + 0.5))){
centerY = (int) centerY + 0.5;
bewegteRichtungY = 0;
}else if(bewegteRichtungY == -1 && !labyrinth.isFrei((int) centerX, (int) (centerY - 0.5))){
centerY = (int) centerY + 0.5;
bewegteRichtungY = 0;
}
}
private void tickTurn(boolean crossedCenterX, boolean crossedCenterY){
boolean turnXToY = crossedCenterX && bewegteRichtungX != 0 && bevorzugteRichtungY != 0 && spiel.getLabyrinth().isFrei((int) centerX, (int) (centerY + bevorzugteRichtungY));
boolean turnYToX = crossedCenterY && bewegteRichtungY != 0 && bevorzugteRichtungX != 0 && spiel.getLabyrinth().isFrei((int) (centerX + bevorzugteRichtungX), (int) centerY);
if(turnXToY){
centerX = (int) centerX + 0.5;
bewegteRichtungX = 0;
bewegteRichtungY = bevorzugteRichtungY;
}else if(turnYToX){
centerX = (int) centerX + 0.5;
bewegteRichtungY = 0;
bewegteRichtungX = bevorzugteRichtungX;
}
}
public void tick(){
tickBewegteRichtung();
double newX = centerX + bewegteRichtungX * Geschwindigkeit;
double newY = centerY + bewegteRichtungY * Geschwindigkeit;
boolean crossedCenterX = Math.abs((centerX - 0.5)%1.0 - (newX - 0.5) % 1.0)> 0.5;
boolean crossedCenterY = Math.abs((centerY - 0.5)%1.0 - (newY - 0.5) % 1.0)> 0.5;
centerX = newX;
centerY = newY;
tickTurn(crossedCenterX, crossedCenterY);
tickWallCollisions();
}
public double getCenterX(){
return centerX;
}
public double getCenterY(){
return centerY;
}
public double getRadius(){
return radius;
}
public int getBewegteRichtungX() {
return bewegteRichtungX;
}
public int getBewegteRichtungY() {
return bewegteRichtungY;
}
}

17
Spielobjekt.java Normal file
View File

@@ -0,0 +1,17 @@
/**
* Beschreiben Sie hier die Klasse Spielobjekte.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public abstract class Spielobjekt extends GameObject
{
protected final int x;
protected final int y;
public Spielobjekt(int x, int y){
this.x = x;
this.y = y;
}
}

178
bluej.pkg Normal file
View File

@@ -0,0 +1,178 @@
#BlueJ package file
dependency1.from=PacMan
dependency1.to=Spiel
dependency1.type=UsesDependency
dependency10.from=GeistGegner
dependency10.to=Punkt
dependency10.type=UsesDependency
dependency11.from=GeistGegner
dependency11.to=Nichts
dependency11.type=UsesDependency
dependency12.from=Labyrinth
dependency12.to=Spielobjekt
dependency12.type=UsesDependency
dependency13.from=Labyrinth
dependency13.to=Nichts
dependency13.type=UsesDependency
dependency14.from=Labyrinth
dependency14.to=Block
dependency14.type=UsesDependency
dependency15.from=Labyrinth
dependency15.to=Punkt
dependency15.type=UsesDependency
dependency16.from=Spiel
dependency16.to=Display
dependency16.type=UsesDependency
dependency17.from=Spiel
dependency17.to=Labyrinth
dependency17.type=UsesDependency
dependency18.from=Spiel
dependency18.to=PacMan
dependency18.type=UsesDependency
dependency19.from=Spiel
dependency19.to=GeistGegner
dependency19.type=UsesDependency
dependency2.from=PacMan
dependency2.to=Punkt
dependency2.type=UsesDependency
dependency20.from=Spiel
dependency20.to=GeistGegner2
dependency20.type=UsesDependency
dependency21.from=Spielfiguren
dependency21.to=Spiel
dependency21.type=UsesDependency
dependency22.from=Spielfiguren
dependency22.to=Labyrinth
dependency22.type=UsesDependency
dependency23.from=Display
dependency23.to=Spiel
dependency23.type=UsesDependency
dependency3.from=PacMan
dependency3.to=Nichts
dependency3.type=UsesDependency
dependency4.from=GeistGegner2
dependency4.to=PacMan
dependency4.type=UsesDependency
dependency5.from=GeistGegner2
dependency5.to=Spiel
dependency5.type=UsesDependency
dependency6.from=GeistGegner2
dependency6.to=Punkt
dependency6.type=UsesDependency
dependency7.from=GeistGegner2
dependency7.to=Nichts
dependency7.type=UsesDependency
dependency8.from=GeistGegner
dependency8.to=PacMan
dependency8.type=UsesDependency
dependency9.from=GeistGegner
dependency9.to=Spiel
dependency9.type=UsesDependency
editor.fx.0.height=0
editor.fx.0.width=0
editor.fx.0.x=0
editor.fx.0.y=0
objectbench.height=82
objectbench.width=1256
package.divider.horizontal=0.6
package.divider.vertical=0.8469852104664392
package.editor.height=488
package.editor.width=1132
package.editor.x=0
package.editor.y=0
package.frame.height=685
package.frame.width=1294
package.numDependencies=23
package.numTargets=12
package.showExtends=true
package.showUses=true
project.charset=windows-1252
readme.height=60
readme.name=@README
readme.width=48
readme.x=10
readme.y=10
target1.height=70
target1.name=PacMan
target1.showInterface=false
target1.type=ClassTarget
target1.width=120
target1.x=780
target1.y=270
target10.height=70
target10.name=Block
target10.showInterface=false
target10.type=ClassTarget
target10.width=120
target10.x=480
target10.y=390
target11.height=70
target11.name=Spielobjekt
target11.showInterface=false
target11.type=AbstractTarget
target11.width=120
target11.x=320
target11.y=210
target12.height=70
target12.name=Display
target12.showInterface=false
target12.type=ClassTarget
target12.width=120
target12.x=10
target12.y=150
target2.height=70
target2.name=GeistGegner2
target2.showInterface=false
target2.type=ClassTarget
target2.width=120
target2.x=930
target2.y=90
target3.height=70
target3.name=GeistGegner
target3.showInterface=false
target3.type=ClassTarget
target3.width=120
target3.x=770
target3.y=90
target4.height=70
target4.name=Labyrinth
target4.showInterface=false
target4.type=ClassTarget
target4.width=120
target4.x=530
target4.y=110
target5.height=70
target5.name=Punkt
target5.showInterface=false
target5.type=ClassTarget
target5.width=120
target5.x=160
target5.y=390
target6.height=70
target6.name=Nichts
target6.showInterface=false
target6.type=ClassTarget
target6.width=120
target6.x=320
target6.y=350
target7.height=70
target7.name=Spiel
target7.showInterface=false
target7.type=ClassTarget
target7.width=120
target7.x=100
target7.y=40
target8.height=70
target8.name=GameObject
target8.showInterface=false
target8.type=AbstractTarget
target8.width=120
target8.x=320
target8.y=110
target9.height=70
target9.name=Spielfiguren
target9.showInterface=false
target9.type=AbstractTarget
target9.width=120
target9.x=560
target9.y=240

178
package.bluej Normal file
View File

@@ -0,0 +1,178 @@
#BlueJ package file
dependency1.from=PacMan
dependency1.to=Spiel
dependency1.type=UsesDependency
dependency10.from=GeistGegner
dependency10.to=Punkt
dependency10.type=UsesDependency
dependency11.from=GeistGegner
dependency11.to=Nichts
dependency11.type=UsesDependency
dependency12.from=Labyrinth
dependency12.to=Spielobjekt
dependency12.type=UsesDependency
dependency13.from=Labyrinth
dependency13.to=Nichts
dependency13.type=UsesDependency
dependency14.from=Labyrinth
dependency14.to=Block
dependency14.type=UsesDependency
dependency15.from=Labyrinth
dependency15.to=Punkt
dependency15.type=UsesDependency
dependency16.from=Spiel
dependency16.to=Display
dependency16.type=UsesDependency
dependency17.from=Spiel
dependency17.to=Labyrinth
dependency17.type=UsesDependency
dependency18.from=Spiel
dependency18.to=PacMan
dependency18.type=UsesDependency
dependency19.from=Spiel
dependency19.to=GeistGegner
dependency19.type=UsesDependency
dependency2.from=PacMan
dependency2.to=Punkt
dependency2.type=UsesDependency
dependency20.from=Spiel
dependency20.to=GeistGegner2
dependency20.type=UsesDependency
dependency21.from=Spielfiguren
dependency21.to=Spiel
dependency21.type=UsesDependency
dependency22.from=Spielfiguren
dependency22.to=Labyrinth
dependency22.type=UsesDependency
dependency23.from=Display
dependency23.to=Spiel
dependency23.type=UsesDependency
dependency3.from=PacMan
dependency3.to=Nichts
dependency3.type=UsesDependency
dependency4.from=GeistGegner2
dependency4.to=PacMan
dependency4.type=UsesDependency
dependency5.from=GeistGegner2
dependency5.to=Spiel
dependency5.type=UsesDependency
dependency6.from=GeistGegner2
dependency6.to=Punkt
dependency6.type=UsesDependency
dependency7.from=GeistGegner2
dependency7.to=Nichts
dependency7.type=UsesDependency
dependency8.from=GeistGegner
dependency8.to=PacMan
dependency8.type=UsesDependency
dependency9.from=GeistGegner
dependency9.to=Spiel
dependency9.type=UsesDependency
editor.fx.0.height=0
editor.fx.0.width=0
editor.fx.0.x=0
editor.fx.0.y=0
objectbench.height=82
objectbench.width=1256
package.divider.horizontal=0.6
package.divider.vertical=0.8469852104664392
package.editor.height=488
package.editor.width=1132
package.editor.x=0
package.editor.y=0
package.frame.height=685
package.frame.width=1294
package.numDependencies=23
package.numTargets=12
package.showExtends=true
package.showUses=true
project.charset=windows-1252
readme.height=60
readme.name=@README
readme.width=48
readme.x=10
readme.y=10
target1.height=70
target1.name=PacMan
target1.showInterface=false
target1.type=ClassTarget
target1.width=120
target1.x=780
target1.y=270
target10.height=70
target10.name=Block
target10.showInterface=false
target10.type=ClassTarget
target10.width=120
target10.x=480
target10.y=390
target11.height=70
target11.name=Spielobjekt
target11.showInterface=false
target11.type=AbstractTarget
target11.width=120
target11.x=320
target11.y=210
target12.height=70
target12.name=Display
target12.showInterface=false
target12.type=ClassTarget
target12.width=120
target12.x=10
target12.y=150
target2.height=70
target2.name=GeistGegner2
target2.showInterface=false
target2.type=ClassTarget
target2.width=120
target2.x=930
target2.y=90
target3.height=70
target3.name=GeistGegner
target3.showInterface=false
target3.type=ClassTarget
target3.width=120
target3.x=770
target3.y=90
target4.height=70
target4.name=Labyrinth
target4.showInterface=false
target4.type=ClassTarget
target4.width=120
target4.x=530
target4.y=110
target5.height=70
target5.name=Punkt
target5.showInterface=false
target5.type=ClassTarget
target5.width=120
target5.x=160
target5.y=390
target6.height=70
target6.name=Nichts
target6.showInterface=false
target6.type=ClassTarget
target6.width=120
target6.x=320
target6.y=350
target7.height=70
target7.name=Spiel
target7.showInterface=false
target7.type=ClassTarget
target7.width=120
target7.x=100
target7.y=40
target8.height=70
target8.name=GameObject
target8.showInterface=false
target8.type=AbstractTarget
target8.width=120
target8.x=320
target8.y=110
target9.height=70
target9.name=Spielfiguren
target9.showInterface=false
target9.type=AbstractTarget
target9.width=120
target9.x=560
target9.y=240