Karten ziehen
Karten von einem Endlosstapel ziehen
Um Karten zu ziehen, nutzen wir einen unendlichen 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) Öffne das vorbereitete BlueK-Projekt 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 "Untersuchen" und "Übernehmen" benutzt.
Beschreibe deren Wirkung.
(d) Ziehe eine Karte vom Stapel und speichere sie mit Hilfe des
"Übernehmen"-Buttons in der Objektleiste unten in BlueK.
Wiederhole das mehrfach für die gerade gezogene Karte - also ohne wieder eine neue
Karte zu ziehen.
Untersuche die in der Objektleiste angezeigten Karten.
Vervollständige den Satz:
„Objekte können unter ... Namen gespeichert werden, die sich alle
auf das ... Objekt beziehen.‟
(e) 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. Als erste Annäherung an das Spiel könnten wir hier Schleifen nutzen, um mehrere Karten zu ziehen und anzuzeigen. Es gibt unterschiedliche Arten von Schleifen. Um eine feste Anzahl an Wiederholungen ablaufen zu lassen, eigenen sich 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: Int = 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 BlueK ein Hauptprogramm, das einen Endlosstapel erzeugt, davon zehn Karten zieht und diese ausgibt.