Drei-Karten-Blackjack
Es wäre natürlich praktisch, wenn das Programm die Werte der gezogenen Karten
automatisch addieren würde.
Dazu müssten wir uns die gezogenen Karten merken und ihre Werte summieren.
Allerdings müssten wir uns dann hier damit beschäftigen, was bei einem leeren
Stapel passiert.
Kotlin ist "null-sicher", das bedeutet, dass das Programm dich zwingt,
dich mit dem Fall zu beschäftigen, dass keine Karte mehr im Stapel ist.
Selbst wenn unser Programm immer nur drei Karten zieht,
müssten wir also den Fall behandeln, dass der Stapel leer ist.
null und die Behandlung von null-Werten
werden in späteren Kapiteln behandelt.
Drei Karten ziehen
Für unsere erste vereinfachte Blackjack-Runde werden genau drei zufällige Karten gezogen. Die Werte werden nach den Regeln dieses Abschnitts addiert: Ass zählt 11, Bube, Dame und König zählen 10. Wer über 21 kommt, verliert.
Aufgabe 1
Spiele eine Runde Drei-Karten-Blackjack. Nutze dazu interaktive Methodenaufrufe im Objektbereich oder das Codepad. Tipp: Du kannst im Codepad Befehle wiederholen, indem du die Pfeil-Hoch-Taste ↑ benutzt.
zieheUndZeige() liefert keine Karte zurück.
Deshalb lässt sich aus ihrem Aufruf nicht unmittelbar ein Kartenwert berechnen.
Die Rückgabe einer gezogenen Karte und der Umgang mit einem leeren
Stapel werden später behandelt.Programmablauf automatisieren
Bisher waren alle Objekte, die wir erzeugt haben, und alle Arbeiten damit temporär. Wenn BlueK neu startet, ist der Zustand, den wir hergestellt haben, verloren. Um einen Programmablauf dauerhaft zu speichern, muss dieser als Kotlin-Code angegeben werden. Dieser Ablauf kann dann automatisch ausgeführt werden. Wir nennen diesen Code das Hauptprogramm. Dazu schreibt man üblicherweise eine Funktion mit dem Namen main. In ihr definieren wir, welche Objekte es geben soll und welche Methoden zu Beginn daran aufgerufen werden sollen.
Ein einfaches Hauptprogramm kann z.B. so aussehen:
fun main() {
var s = Stapel()
s.zieheUndZeige()
}
Man kann die main-Funktion in einer beliebigen
Datei speichern.
In BlueK muss für Funktionen eine eigene Datei angelegt werden,
da man in BlueK Funktionen und Klassen nicht in einer Datei mischen darf.
(In Kotlin wäre das eigentlich erlaubt. Aber aus verschiedenen
Gründen ist das in BlueK nicht zulässig.)
Wir müssen dafür links in BlueK eine neue Datei erzeugen und angeben, dass sie Funktionen - und keine Klassen - enthalten soll. Der Name spielt keine Rolle, aber Hauptprogramm oder Main (großgeschrieben) wären beispielsweise geeignete Namen.
Nach dem Kompilieren kann man die main-Funktion
nach Rechtsklick auf die Datei oder direkt über den
Start main-Button starten.
Aufgabe 2
- Erstelle eine neue Datei für das Hauptprogramm.
-
Definiere dort die
main-Funktion nach dem oben dargestellten Muster. Ergänze Anweisungen, die dafür sorgen, dass ein Stapel erzeugt, mit Karten befüllt und gemischt wird und anschließend drei Karten gezogen und ausgegeben werden. - Starte das Hauptprogramm. Wenn du das Hauptprogramm mehrfach hintereinander startest, kannst du nun Drei-Karten-Blackjack spielen.