aboutsummaryrefslogtreecommitdiff
path: root/MyWorld.java
blob: 04b1da8ce3c228d7f4800253f185c9d929002dce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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();
    }
}