Karten ziehen
Karten von einem Endlosstapel ziehen
Um Karten zu ziehen, nutzen wir einen endlosen Stapel von Karten, der bei Bedarf
eine neue, zufällige Karte liefert.
Die Klassendiagramme zeigen die wesentliche Struktur der Klassen
Endlosstapel
und Karte.
Aufgabe 1 - Endlosstapel nutzen
(a) Beschreibe die Struktur der beiden Klassen mit Hilfe der Klassendiagramme.
Gehe dabei auch auf den Rückgabetyp der Methode zieheKarte ein.
(b) Lade das vorbereitete BlueJ-Projekt herunter, entpacke es und erzeuge einen Endlosstapel, indem du rechts auf die Klasse klickst und den Konstruktor auswählst.
(c) Ziehe eine Karte vom Stapel, indem du die Methode zieheKarte
aufrufst.
Experimentiere mit der Rückgabe, indem du die Buttons "Inspect" und "Get" benutzt.
Beschreibe deren Wirkung.
(d) Schreibe ein Hauptprogramm, das
- einen Endlosstapel erzeugt,
- zwei Karten vom Stapel zieht,
- und diese ausgibt.
Mehrere Karten ziehen
Um Aktionen mehrfach zu wiederholen, gibt es in den meisten Programmiersprachen das Konzept von Schleifen, auch Wiederholungen genannt. Wir benötigen Schleifen hier, um mehrere Karten zu ziehen und verwenden hierfür for-Schleifen. Eine for-Schleife in Kotlin funktioniert nach folgendem Schema:
für jedes Element x aus einer Menge von Elementen {
// tue etwas (möglicherweise mit x)
}
Konkret sehen for-Schleifen beispielsweise so aus:
Beispiel 1
fun main() {
for (zahl in 1..5) {
println("$zahl : ${ zahl * zahl }")
}
}
Beispiel 2
fun main() {
for (zahl:Int in 1..5) {
println("$zahl : ${ zahl * zahl }")
}
}
Beispiel 3
fun main() {
for (zeichen in "Hallo") {
println(zeichen)
}
}
Beispiel 4
fun main() {
var counter = 0
for (zeichen in "Hallo") {
counter = counter + 1
}
println("Anzahl Zeichen: $counter")
}
Die Beispiele verwenden teilweise String-Templates, um die Ausgabe zu vereinfachen. Im Abschnitt Tipps zu Kotlin sind diese beschrieben.
Aufgabe 2
Beschreibe die Benutzung einer for-Schleife an den obigen Beispielen.
Aufgabe 3
Schreibe in BlueJ ein Hauptprogramm, das einen Endlosstapel erzeugt, davon zehn Karten zieht und diese ausgibt.