Initial sharing of project
This commit is contained in:
96
GeistGegner.java
Normal file
96
GeistGegner.java
Normal 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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user