import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) /** * Die Klasse MyWorld verwaltet alle Objekte des Spiels. * * @author Michael Arnot * @author Florian Fischer * @version 2024-06-14 */ public class MyWorld extends World { int alienAnzahl = 0; int punkte = 0; int zeit = 0; /** * Konstruktor für Objekte der Klasse MyWorld * */ public MyWorld() { // Erstellt eine neue Welt mit 600x400 Zellen und einer Zell-Groesse von 1x1 Pixeln. super(600, 600, 1); getBackground().setColor(Color.BLACK); getBackground().fill(); level1(); } public void act() { zeit++; showText("Zeit", 500, 20); showText("" + zeit/50, 500, 40); if (alienAnzahl == 0) { gewonnen(); } showText("Punkte", 100, 20); showText("" + punkte, 100, 40); } public void reduziereAlienAnzahl() { alienAnzahl--; } public void erhoehePunkte(int p) { punkte = punkte + p; } /** * Bereite die Welt fuer den Programmstart vor. * Das heisst: Erzeuge die Anfangs-Objekte und fuege sie der Welt hinzu. */ private void level1() { Raumschiff raumschiff = new Raumschiff(); addObject(raumschiff, 300,565); for (int zeile = 0; zeile < 5; zeile++) { for (int spalte = 0; spalte < 10; spalte++) { addObject(new Alien(), 118 + spalte*42, 50 + zeile*38); alienAnzahl++; } } } private void erzeugeSchilde() { for (int m = 0; m < 4; m++) { for (int r = 0; r < 12; r++) { for (int f = 0; f < 2; f++) { addObject(new Schild(), 80 + 60 * f + 126 * m, 470 + 4*r); addObject(new Schild(), 85 + 50 * f + 126 * m, 465 + 4*r); } for (int f = 0; f<10; f++) { addObject(new Schild(), 90 + 5 * f + 126 * m, 460 + 4*r); } } } } private void gewonnen() { showText("V I C T O R Y", 300, 300); Greenfoot.stop(); } /* * Der Spieler hat verloren und die "Aliens" haben den Planeten erreicht */ public void verloren() { showText("G A M E O V E R", 300, 300); Greenfoot.stop(); } }