aboutsummaryrefslogtreecommitdiff
path: root/Raumschiff.java
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-07-12 23:07:39 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-07-12 23:13:11 +0200
commit3b632e8a598bfcd75fd88d13e6d575996d98cf8b (patch)
tree347b11cba6bbb7358ab1940c01a6f812a100814f /Raumschiff.java
downloadspaceinvaders-3b632e8a598bfcd75fd88d13e6d575996d98cf8b.tar.gz
spaceinvaders-3b632e8a598bfcd75fd88d13e6d575996d98cf8b.zip
initial commit
Diffstat (limited to 'Raumschiff.java')
-rw-r--r--Raumschiff.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/Raumschiff.java b/Raumschiff.java
new file mode 100644
index 0000000..4a06e60
--- /dev/null
+++ b/Raumschiff.java
@@ -0,0 +1,72 @@
+import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo)
+import java.util.List;
+
+/**
+ * Das Raumschiff, das die Welt vor den Alien schuetzen soll.
+ */
+public class Raumschiff extends Actor
+{
+ boolean leertasteGedrueckt = false;
+
+ /**
+ * Act - stellt das Verhalten des Raumschiffs dar. Diese Methode wird aufgerufen,
+ * sobald der 'Act' oder 'Run' Button in der Umgebung angeklickt werden.
+ */
+ public void act()
+ {
+ pruefeTastatur();
+ pruefeKollision();
+ }
+
+ /**
+ * Reagiert auf die Pfeiltasten.
+ */
+ public void pruefeTastatur()
+ {
+ if (Greenfoot.isKeyDown("left"))
+ {
+ setLocation(getX() - 3, getY());
+ }
+
+ if (Greenfoot.isKeyDown("right"))
+ {
+ setLocation(getX() + 3, getY());
+ }
+
+ if (Greenfoot.isKeyDown("space"))
+ {
+ if (leertasteGedrueckt == false)
+ {
+ schiessen();
+ leertasteGedrueckt = true;
+ }
+ }
+ else
+ {
+ leertasteGedrueckt = false;
+ }
+ }
+
+ /**
+ * Das Raumschiff schiesst einen Laserschuss
+ */
+ public void schiessen()
+ {
+ Greenfoot.playSound("EnergyGun.wav");
+ Laser laser = new Laser();
+ getWorld().addObject(laser, getX(),getY());
+ }
+
+ /**
+ * Ueberprueft ob das Raumschiff von einem Alien getroffen wurde.
+ */
+ private void pruefeKollision()
+ {
+ if (isTouching(Lazer.class))
+ {
+ removeTouching(Lazer.class);
+ ((MyWorld)getWorld()).verloren();
+ getWorld().removeObject(this);
+ }
+ }
+}