Programmieren mit KI#

Das Schreiben von Algorithmen ist oft eine herausfordernde Aufgabe. Während Programmieren traditionell bedeutet, dass wir alle Details selbst festlegen müssen, eröffnet uns KI neue Möglichkeiten, diese Prozesse zu beschleunigen und zu vereinfachen. Auch wenn KI sehr leistungsfähig ist, ist es wichtig zu verstehen, dass ihre Lösungen nicht immer fehlerfrei sind. Die Vorschläge müssen hinterfragt und überprüft werden, um sicherzustellen, dass sie nicht nur syntaktisch korrekt, sondern auch logisch und inhaltlich sinnvoll sind.

In diesem Abschnitt werden wir uns damit beschäftigen, wie man Künstliche Intelligenz als Unterstützung beim Programmieren nutzen kann. Sie werden lernen, wie Sie kleine Aufgaben selbstständig programmieren, diese dann der KI übergeben und anschließend die Ergebnisse kritisch prüfen.

Regelwerk#

Das Ziel dieses Kapitels ist es ein simples Text-RPG-Spiel zu implementieren. Die Spielregeln sind die folgenden:

  • Es gibt zwei Spieler: Der „Spieler“ und der „Gegner“.

  • Jeder Spieler hat 100 Lebenspunkte, die nicht überschritten werden können.

  • Der Gegner greift in jedem Zug an, was zufälligen Schaden zwischen 5 und 25 Punkten anrichtet.

  • Der Spieler entscheidet, ob er angreifen oder sich heilen möchte.

    • Heilen: Der Spieler heilt sich um 0 bis 30 Punkte.

    • Angriff: Der Spieler fügt dem Gegner zwischen 5 und 25 Punkten Schaden zu.

  • Der Spieler macht zuerst seinen Zug

  • Der Kampf geht weiter, bis einer der beiden Spieler 0 Lebenspunkte erreicht.

  • Am Ende des Kampfes soll angezeigt werden, wer gewonnen hat und wie lange der Kampf gedauert hat.

Exkurs: User-Inputs#

Da das Spiel interaktiv ist, müssen Sie Python im Kampf mitteilen welche Aktion Sie ausführen wollen. Deswegen ist es wichtig, dass Sie wissen wie Sie User-Eingaben in Python anfordern können.

Mit dem Befehl \(\texttt{input()}\) öffnet Python ein Kommandofester, in das der User seine Eingabe eingibt und schließlich mit der Eingabetaste bestätigt.

Zahl = input("Wähle eine Zahl zwischen 1 und 6 ")
print(f"Deine Zahl ist {Zahl}.")

Auch wenn wir den User um eine Zahl zwischen 1 und 6 bitten, kann er trotzdem zum Beispiel die Zahl 7 eingeben. Im Rahmen des RPG-Spiels sollten Sie den Spieler darauf aufmerksam machen, wenn die Eingabe ungültig war, damit der Zug wiederholt werden kann. Alternativ können Sie den Zug als ungültig erklären und den User aussetzen lassen.

Natürlich können Sie die User-Eingabe auch weiter verarbeiten und typische Fehler auffangen, zum Beispiel indem Sie Ihren Code robust gegen Groß- und Kleinschreibung sowie unnötige Leerzeichen machen.

  • \(\texttt{.strip()}\) eliminiert alle Leerzeichen vor und nach der Eingabe, das heißt \(\texttt{"}~~~\texttt{HaLloOo}~~~~~\texttt{"}\) wird zu \(\texttt{"HaLloOo"}\).

  • \(\texttt{.lower()}\) verwandelt alle Buchstaben in Kleinbuchstaben, das heißt \(\texttt{"HaLloOo"}\) wird zu \(\texttt{"hallooo"}\).

text = "   HaLloOo    "
print(text)

text_kein_leerzeichen = text.strip()
print(text_kein_leerzeichen)

text_klein = text_kein_leerzeichen.lower()
print(text_klein)
   HaLloOo    
HaLloOo
hallooo

Aufgabe 1.1

Probieren Sie aus, wie sich die Ausgabe ändert, wenn Sie Leerzeichen und Großbuchstaben verwenden.

Wort = input("Was ist Ihr Lieblingswort? ").strip().lower()
print(f"Ihr Lieblingswort ist {Wort}.")

Möchte man die Auswahl der Eingaben eingrenzen, kann es sinnvoll sein die möglichen Eingaben in der Frage zu erwähnen. Auch wenn das den User nicht davon abhält sich unerwartet zu verhalten und auf die Frage Welches Wort mögen Sie mehr: Freizeit oder Urlaub? mit 42 zu antworten. Wie Sie mit einem solchen Verhalten in Ihrem Code umgehen, liegt an Ihnen.

Spieleentwicklung#

Zuerst sollen Sie das Spiel einmal möglichst selbst implementieren. Die Lösung ist mitnichten eindeutig - hier führen viele Wege zum Ziel. Bevor Sie den Python-Code schreiben, überlegen Sie sich wie Sie Ihren Code aufbauen wollen, das heißt schreiben Sie zunächst einen Pseudo-Code. Versuchen Sie möglichst den Pseudo-Code selbstständig zuerstellen um ein Gefühl für das Problem zu bekommen und Ihr algorithmisches Denken zu schulen. Fragen Sie daher die KI tunlichst nicht um Hilfe.

Aufgabe 1.2

Überlegen Sie sich, zum Beispiel in Pseudo-Code, wie Sie das Spiel in Python aufbauen wollen.

Als nächstes sollen Sie Ihren Pseudo-Code in funktionierenden Python-Code übersetzen. Da dieses Spiel interaktiv programmiert wird, sollten einige Dinge beachtet werden. Es sollte möglichst alles, was im Spiel passiert, über \(\texttt{print}\) an den Spieler übergeben werden, damit er basierend darauf seine nächste Entscheidung treffen kann. Das heißt die aktuellen Lebenspunkte beider Parteien sollten in jeder Runde angezeigt werden.

Aufgabe 1.3

Implementieren Sie nun das Spiel in Python. Nutzen Sie Ihren zuvor entwickelten Pseudo-Code. Bei der Umwandlung in Python-Code kann Ihnen eine KI gerne helfen. Natürlich können Sie den Code auch selbstständig schreiben.

# Ihr Code

KI als Spieleentwickler#

Abschließend wollen wir einer KI Ihrer Wahl auch die Chance geben sich als Spieleentwicker*in zu etablieren. Lassen Sie eine KI, am besten in einem neuen Chat (sofern Sie für Aufgabe 1.3 eine KI zu Rate gezogen habe), das Spiel vollständig selbst implementieren.

Aufgabe 1.4

Fragen Sie eine beliebige KI nach einem Code zum simulieren des Spiels. Wird ein fehler- oder lückenhafter Code produziert? Kopieren Sie den Code in die unter Zeile und probieren Sie ihn aus.

# Ihr Code 

Achtung

Künstliche Intelligenzen sind im stetigen Wandel und werden im besser. Fehler die zum Beispiel ChatGPT während des Zeitpunkts der Erstellung der Website gemacht hat, müssen nicht notwendigerweise auftauchen, wenn Sie zum aktuellen Zeitpunkt nach dem Gleichen fragen. Zudem beeinflusst die Art und Weise, wie man die Aufgabe in den Prompt der KI eingibt maßgeblich das Ergebnis. Daher ist es - egal was Sie mit der KI machen - wichtig die Ausgabe zu hinterfragen und mit Hilfe von Tests auf Fehler zu untersuchen. Je komplexer das Problem, desto fehleranfälliger ist die KI.