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){ } }