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
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
- Spiele das Spiel!
- Benutze den Reset-Knopf, um das Spiel neu zu starten.
- Verändere den Namen der
main()-Funktion und teste, ob du das Hauptprogramm noch starten und zurücksetzen kannst. - 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. - Beschreibe den Zusammenhang zwischen der
main()-Funktion und dem Reset-Button.