s n h m r u

Minimallogo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

s n h m r u
i

Hauptprogramm

Anlegen des Hauptprogramms

Das Erzeugen von Objekten per Mausklick ist praktisch, um einzelne Objekte auszuprobieren. Allerdings ist alles wieder verloren, sobald du BlueJ schließt: Beim nächsten Start musst du Spielfeld, Spieler und Münzen erneut von Hand anlegen. Auch wenn du eine neue Runde spielen willst, musst du wieder alles von Hand aufbauen. Ein Hauptprogramm löst dieses Problem: Es enthält die Schritte, die beim (Neu-)Start des Spiels automatisch ausgeführt werden.

Im Projekt gibt es bereits eine Datei Main. Öffne sie mit einem Doppelklick. Sie enthält bisher nur eine leere main()-Funktion. Den Anfang einer Implementierung siehst du hier:

fun main() {
    // Das Spielfeld erzeugen
    val welt = Spielfeld()

    // TODO: Hier die Spielobjekte hinzufügen (Spieler, Münzen, Gegner).

    // Das Spielfeld anzeigen
    welt.show()
}

Zuerst wird mit val welt = Spielfeld() ein Spielfeld-Objekt erzeugt und unter dem Namen welt gespeichert. Ganz am Ende zeigt welt.show() das Feld an. Dazwischen fehlen noch die Spielobjekte.

Kotlin erkennt am Konstruktoraufruf Spielfeld(), dass welt den Datentyp Spielfeld hat. Der Datentyp muss deshalb nicht zusätzlich angegeben werden.

Wenn man die Aktionen, die wir bisher per Mausklick gemacht haben, in Code umsetzt, sieht das z.B. so aus:

    // eine Münze erzeugen
    val muenze = Muenze()
    // die Münze an Position (100, 80) setzen
    welt.addObject(muenze, 100, 80)

Da wir nie mehr auf die Münze im Code zugreifen müssen, nachdem wir sie auf dem Spielfeld platziert haben, können wir die beiden Zeilen auch in einer zusammenfassen:

    // eine Münze erzeugen und an Position (100, 80) setzen
    welt.addObject(Muenze(), 100, 80)

Aufgabe 1

Ergänze die main()-Funktion so, dass das Spielfeld mit allen Objekten aufgebaut wird, die du bisher per Mausklick erzeugt hast.
Hilfe

Bringe die Zeilen einer möglichen Lösung in die richtige Reihenfolge. Verwende dabei genau einen Spieler, drei Münzen und einen Gegner. Die Münzen sollen oben links, der Spieler in der Mitte und der Gegner unten rechts erscheinen. Die Reihenfolge, in der du diese Spielobjekte hinzufügst, ist beliebig. Setze die passenden Konstruktoraufrufe als Bausteine ein. Den Variablennamen sowie die Methoden zum Hinzufügen der Objekte und zum Anzeigen des Spielfelds musst du selbst eintippen.

fun main() {                                  §§fest
    val §§welt::tippen§§ = Spielfeld()        §§fest
    welt.§§addObject::tippen§§(§§Muenze()§§, 70, 60)      §§gruppe
    welt.§§addObject::tippen§§(§§Muenze()§§, 150, 60)     §§gruppe
    welt.§§addObject::tippen§§(§§Muenze()§§, 70, 140)     §§gruppe
    welt.§§addObject::tippen§§(§§Spieler()§§, 300, 200)   §§gruppe
    welt.§§addObject::tippen§§(§§Gegner()§§, 520, 330)    §§gruppe
    welt.§§show::tippen§§()
}                                             §§fest

Das Hauptprogramm starten

Da du Code geändert hast, musst du die Datei zunächst kompilieren. Anschließend führst du das Hauptprogramm per Rechtsklick auf Main und Auswahl von main() aus. Das Spielfeld erscheint nun mit allen Objekten. Starte das Spiel wie zuvor mit dem Start-Knopf in der Steuerleiste.

Aufgabe 2

  1. Spiele das Spiel!
  2. Benutze den Reset-Knopf, um das Spiel neu zu starten.
  3. Verändere den Namen der main()-Funktion und teste, ob du das Hauptprogramm noch starten und zurücksetzen kannst.
  4. Optional: Verändere den Namen der Main-Datei. Teste ebenfalls, ob du das Hauptprogramm noch starten und zurücksetzen kannst. Du musst die Datei außerhalb von BlueJ umbenennen und BlueJ neu starten, damit die Änderung wirksam wird.
  5. Beschreibe den Zusammenhang zwischen der main()-Funktion und dem Reset-Button.

Suche

v
100.123.1.2.4 Hauptprogramm
Kopieren durch Anklicken

Rückmeldung geben