From 3b632e8a598bfcd75fd88d13e6d575996d98cf8b Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Fri, 12 Jul 2024 23:07:39 +0200 Subject: initial commit --- Alien.java | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Alien.java (limited to 'Alien.java') diff --git a/Alien.java b/Alien.java new file mode 100644 index 0000000..06775b8 --- /dev/null +++ b/Alien.java @@ -0,0 +1,77 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Aliens bewegen sich von links nach rechts bis zum unteren Bildschirmrand. + */ +public class Alien extends Actor +{ + + int geschwindigkeit = 2; + + /** + * Act - tut, was auch immer Alien tun will. Diese Methode wird aufgerufen, + * sobald der 'Act' oder 'Run' Button in der Umgebung angeklickt werden. + */ + public void act() + { + bewegen(); + schiessen(); + pruefeSieg(); + pruefeKollision(); + } + + /** + * Das Alien bewegt sich mit der aktuellen Geschwindigkeit in X-Richtung. + * Falls es einen Rand beruehrt wechselt es in die naechste Zeile und + * invertiert die Geschwindigkeit. + */ + private void bewegen() + { + setLocation((getX() + geschwindigkeit), getY()); + // Das Alien hat einen Seitenrand erreicht + if (getX() == 599 || getX() == 0) + { + geschwindigkeit = geschwindigkeit * -1; + setLocation(getX() + geschwindigkeit, getY() + 36); + } + } + + /** + * Wenn ein Alien den unteren Rand des Bildschirms erreicht, ist das Spiel + * verloren. + */ + private void pruefeSieg() + { + if (getY() >= 590) + { + ((MyWorld)getWorld()).verloren(); + } + } + + /** + * Ueberprueft ob ein Alien von einem Projektil getroffen wurde. + */ + private void pruefeKollision() + { + if (isTouching(Laser.class)) + { + removeTouching(Laser.class); // Projektil wird zerstört + Greenfoot.playSound("Explosion.wav"); + ((MyWorld)getWorld()).erhoehePunkte(50); // Spieler bekommt Punkte + ((MyWorld)getWorld()).reduziereAlienAnzahl(); + getWorld().removeObject(this); // Das Alien selber wird zerstört + } + } + + /** + * Feuert einen Schuss ab mit einer Wahrscheinlichkeit von 0.04%. + */ + private void schiessen() + { + if (Greenfoot.getRandomNumber(10000) <= 4) + { + Lazer lazer = new Lazer(); + getWorld().addObject(lazer, getX(),getY()); + } + } +} -- cgit v1.2.3