Hartkodierte Intelligenz
In einem ersten Schritt wollen wir nun unsere Erfahrungen, die wir mit 
dem Spiel gemacht haben, in ein Computerprogramm übersetzen, das das 
Spiel spielt. 
Ein Teil des Programmtextes ist bereits vorgefertigt. In den Dateien, 
die in Spiel_Anfang.zip aus dem vorigen Abschnit verpackt 
sind, befinden sich u.a. zwei Dateien, die wir jetzt benötigen:
- 
spiel_ki.py
 Diese Datei müssen wir im Normalfall nicht verändern. Sie steuert den Spielablauf mitsamt der graphischen Benutzeroberfläche etc.
- 
q_agent.pyIn dieser Datei können wir schrittweise unsere Künstliche Intelligenz programmieren. Die Datei wird vonspiel_ki.pyaufgerufen; deshalb darf man den Namen nicht einfach ändern. Wenn du Zwischenergebnisse in derq_agent.pyspeichern willst, speichere sie dann später einfach unter einem anderen Namen. Dann kannst du später durch Umbenennen der Dateien wieder auf die alten Ergebnisse zurückgreifen.
 Damit du immer wieder "von Null" anfangen kannst, gibt es noch eine Dateiq_agent.tpl. Diese entspricht genau der am Anfang leeren Dateiq_agent.py. Durch Kopieren dieser Datei kannst du also immer eine "leere"q_agent.pyerzeugen.
Aufgabe 1: Dokumentieren der besten Aktionen
In einem ersten Schritt solltest du dasspiel-mensch.py 
noch einmal spielen und dir für jede Situation die deiner Meinung nach 
beste Aktion notieren. Da alle Situationen und Aktionen durchnummeriert 
sind, kann man das in einer einfachen Tabelle tun.
Aufgabe 2: Test der vorgefertigten Funktion "beste_aktion"
Betrachte die Python-Funktionbeste_aktion(situation, moegliche_aktionen) in der Datei 
q_agent.py:
def beste_aktion(situation,moegliche_aktionen):
    '''
    Sucht zu einer bestimmten Situation s die (nach seinem Wissen) beste Aktion aus.
    Der Parameter moegliche_aktionen ist dabei eine Liste von Aktions-Nummern, 
    die in der Situation s überhaupt möglich sind.
    '''
    return 0
Man sieht: Die bisherige Funktion beste_aktion(situation, moegliche_aktionen)  gibt 
als beste Aktion immer nur die Aktion Nummer 0 zurück, das entspricht 
der Aktion "Weglaufen". Unser Agent in dieser Form könnte deshalb guten 
Gewissens als "Feigling" bezeichnet werden.
Den Effekt kann man sich anschauen: Man startet das Programm 
spiel_ki.py und drückt den Button "Optimal spielen". Man 
sieht den Effekt des Weglaufens: Der Drache freut sich und beleidigt 
den Agenten als "Versager".
Aufgabe 3: Implementation einer hartkodierten Fallunterscheidung
Ändere nun den Code so ab, dass eine Fallunterscheidung für den Agenten entscheidet, welche Aktion er in welchen Situationen ausführt. Die Listemoegliche_aktionen ist hierbei noch uninteressant, da die beste 
von uns ausgewählte Aktion mit Sicherheit auch einer der möglichen 
Aktionen entsprechen wird.  