Aufgrund einer technischen Störung sind wir derzeit telefonisch nicht erreichbar. Wir arbeiten bereits an der Behebung. Vielen Dank für Ihr Verständnis.
E-Book, Deutsch, 620 Seiten
Reihe: Rheinwerk Computing
Gaulke Spiele-KI mit Python programmieren
1. Auflage 2025
ISBN: 978-3-367-11296-8
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
10 Klassiker von TicTacToe bis
E-Book, Deutsch, 620 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-367-11296-8
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
KI-Algorithmen verstehen, Python-Skills erweitern und Spiele programmieren – alles in einem Buch. Anhand von 10 Klassikern wie Eliza, TicTacToe und PacMan führt Python-Dozent Jens Gaulke Sie in die faszinierende Welt der Künstlichen Intelligenz ein. Lernen Sie, wie Sie 2D-Spiele mit Pygame entwickeln und implementieren Sie die KI für clevere Gegner direkt dort. Mit Q-Learning, Alpha-Beta-Pruning und Co. entwickeln Sie dabei Skills, die weit über Arcade-Spiele hinaus in der Business-Welt nützlich sind. Mit vielen Codebeispielen auch zum Herunterladen, Übungen und Vertiefungsideen ideal für alle, die einen Hands-on-Zugang lieben und Spiele mit KI entwickeln möchten.
- 10 Klassiker neu gedacht, vom Chatbot Eliza bis zu Sudokus und Platformern
- KI-Algorithmen spielerisch lernen: Minimax, Q-Learning, Constraint-Satisfaction-Probleme und prozeduralen Welten
- Smarte Spiele, sauberer Code: Entwurfsmuster, Best Practices, 2D-Python-GUIs mit Pygame
Aus dem Inhalt:
- Einen Chatbot mit GUI entwickeln
- Einführung in Pygame
- Q-Learning am Beispiel von TicTacToe
- Constraint Satisfaction für eigene Sudokus
- Austauschbare KIs für Reversi
- KI-Gegner in Maze Madness und Maze-Man
- Level-Design für Maze- und Platformer-Spiele
- Maus, GamePad und Co. abfragen
- Wichtige Entwurfsmuster und Best Practices
- Zustandsautomaten für komplexe Gegner
- Dynamisch generierte Spielwelten
- Exklusiv für das Buch entwickelte Spiele
Autoren/Hrsg.
Weitere Infos & Material
Danksagung ... 19
Materialien zum Buch ... 21
1. Einleitung ... 23
1.1 ... Ich freue mich, dass Sie dabei sind ... 24
1.2 ... Was erwartet Sie in diesem Buch? ... 24
1.3 ... Abgrenzung zu modernen KI-Technologien ... 25
1.4 ... Was genau ist in diesem Buch zu finden? ... 27
1.5 ... Ist dieses Buch für Sie geeignet? ... 34
1.6 ... Das Ziel dieses Buches ... 37
1.7 ... Wenn ich weiter gesehen habe ... ... 38
2. Software ... 41
2.1 ... Alternative 1: Installation von Python ... 42
2.2 ... Alternative 2: Installation von Anaconda ... 44
2.3 ... Installation von Pygame ... 45
2.4 ... Installation von Visual Studio Code ... 46
2.5 ... Erste Schritte mit Visual Studio Code ... 48
2.6 ... Extensions installieren und nutzen ... 50
2.7 ... JupyterLab installieren ... 52
3. Hi! I'm Eliza ... 55
3.1 ... Was ist Eliza? ... 56
3.2 ... Was ist ein Turing-Test? ... 57
3.3 ... Woher kommt der Name Eliza? ... 59
3.4 ... Das MVC-Entwurfsmuster ... 60
3.5 ... Ablauflogik von Eliza ... 62
3.6 ... Implementierung von Eliza ... 64
3.7 ... Ausblick ... 94
3.8 ... Literatur und Quellenangaben ... 94
4. Eliza revamped ... 95
4.1 ... Was ist Pygame? ... 96
4.2 ... Pygame installieren ... 97
4.3 ... Architektur einer Pygame-Anwendung ... 98
4.4 ... Pygame trifft Eliza ... 105
4.5 ... Elizas Struktur ... 138
4.6 ... Zusammenfassung ... 140
4.7 ... Ausblick ... 141
4.8 ... Literatur- und Quellenangaben ... 141
5. Nim ... 143
5.1 ... Ordnerstrukturen für größere Projekte ... 144
5.2 ... Backtracking und Rekursion ... 146
5.3 ... Strategie und Mathematik hinter Nim ... 158
5.4 ... Der Minimax-Algorithmus ... 159
5.5 ... Implementierung von Minimax am Beispiel von Nim ... 166
5.6 ... Der komplette Quelltext ... 174
5.7 ... Ausblick ... 177
5.8 ... Literatur und Quellenangaben ... 178
6. Nim unleashed ... 179
6.1 ... Projektstruktur anlegen ... 180
6.2 ... Nim nach PyGame migrieren ... 184
6.3 ... Ich krieg Zustände ... ... 211
6.4 ... Eine Optimierung für die GUI-Komponenten ... 214
6.5 ... Ausblick ... 216
6.6 ... Literatur und Quellenangaben ... 216
7. Tic-Tac-Toe ... 217
7.1 ... Projektstruktur anlegen ... 218
7.2 ... Das Board und die Regeln ... 218
7.3 ... Die drei KIs ... 221
7.4 ... Die GUI erstellen ... 235
7.5 ... Die Control-Klasse ... 247
7.6 ... Ausblick ... 254
8. Tic-Tac-Q ... 255
8.1 ... Q-Learning ... 256
8.2 ... Swampy Fields ... 262
8.3 ... Q-Learning in Tic-Tac-Toe ... 270
8.4 ... Ausblick ... 282
8.5 ... Literatur und Quellenangaben ... 282
9. Black & White ... 283
9.1 ... Projektstruktur anlegen ... 285
9.2 ... Das Board und die Regeln ... 286
9.3 ... Alpha-Beta Pruning ... 301
9.4 ... Die KI ... 304
9.5 ... Die GUI erstellen ... 317
9.6 ... Animationen und Daumenkinos ... 325
9.7 ... Die Control-Klasse ... 331
9.8 ... Ausblick ... 338
9.9 ... Literatur und Quellenangaben ... 339
10. Black & White: Denken und Steuern ... 341
10.1 ... State Charts ... 342
10.2 ... Beispiele für State Charts ... 344
10.3 ... Ein Menüsystem ... 358
10.4 ... Optimierung des Alpha-Beta Prunings ... 379
10.5 ... Ausblick ... 400
11. Von Sudoku zu intelligenten Lösungen ... 401
11.1 ... Was ist ein CSP? ... 402
11.2 ... Warum Sudoku? ... 403
11.3 ... Was ist ein Sudoku? ... 404
11.4 ... Sudokus erzeugen ... 414
11.5 ... Schrödingers Sudoku -- Aspekte der Quantenmechanik ... 428
11.6 ... Sudokus lösen ... 432
11.7 ... Wo ist das Projekt? ... 439
11.8 ... Sound und Musik ... 440
11.9 ... Export als PDF, PNG, PPT ... 444
11.10 ... Ausblick ... 445
11.11 ... Literatur und Quellenangaben ... 446
12. Maze Madness ... 447
12.1 ... Irrgärten erzeugen ... 448
12.2 ... Das Spielkonzept von Maze Madness ... 457
12.3 ... Steuerung des Spiels ... 459
12.4 ... Grafiken ... 467
12.5 ... Gold einbinden ... 471
12.6 ... Die Geister ... 473
12.7 ... Selina V2.0 ... 480
12.8 ... Erweiterungen an Maze und MazeCell ... 485
12.9 ... Die Geister V2.0 ... 487
12.10 ... Das finale Gameplay ... 490
12.11 ... Wo ist das Projekt? ... 494
12.12 ... Ausblick ... 494
12.13 ... Literatur und Quellenangaben ... 495
13. Die Geister, die ich rief ... 497
13.1 ... Urheberrecht ... 498
13.2 ... Maze Man ... 499
13.3 ... Prozedurale Irrgärten ... 499
13.4 ... Die Logik der Gegner ... 518
13.5 ... Der Spieler ... 531
13.6 ... Wie geht es nun weiter? ... 531
13.7 ... Ausblick ... 532
13.8 ... Literatur und Quellenangaben ... 533
14. Tut's Treasure ... 535
14.1 ... Urheberrecht ... 537
14.2 ... Ideen für unser Spiel ... 539
14.3 ... WFC -- Wave Function Collapse ... 540
14.4 ... Ist WFC künstliche Intelligenz? ... 545
14.5 ... Mit WFC zu Platformer-Leveln ... 546
14.6 ... Der WFC-Code ... 550
14.7 ... Wegesuche mit A* ... 562
14.8 ... A* Im Irrgarten ... 564
14.9 ... Überblick über das Spiel ... 575
14.10 ... Ausblick ... 607
14.11 ... Literatur und Quellenangaben ... 608
15. Spektiven ... 609
15.1 ... Retro-Spektive ... 610
15.2 ... Per-Spektive ... 612
15.3 ... Pro-Spektive ... 612
15.4 ... Intro-Spektive ... 613
15.5 ... Das Ende einer Reise -- die Freude bleibt ... 614
Index ... 615
1.4 Was genau ist in diesem Buch zu finden?
In diesem Buch finden Sie eine spannende Reise durch die Grundlagen und Prinzipien der künstlichen Intelligenz – und wie diese sich in Computerspielen umsetzen lassen. Ich werde Ihnen die wesentlichen Konzepte der KI verständlich erklären, von Entscheidungsbäumen über die Pfadsuche und Verhaltensmuster bis hin zu komplexeren Ansätzen wie dem maschinellen Lernen.
1.4.1 Eliza und KI-Grundlagen
Wir beginnen unsere Reise mit Eliza, einem der frühesten Programme zur Verarbeitung natürlicher Sprache. Es wurde in den 1960er-Jahren von Joseph Weizenbaum entwickelt. Eliza simuliert einen Gesprächspartner, indem es Benutzereingaben nach Schlüsselwörtern durchsucht und mit vordefinierten Antworten reagiert. Obwohl Eliza keine echte Intelligenz besitzt, zeigt es eindrucksvoll, wie man mit einfachen regelbasierten Systemen den Anschein von Dialogfähigkeit erzeugen kann.
Über zwei Kapitel hinweg lernen Sie, wie Eliza funktioniert – und bauen selbst zwei Varianten: eine konsolenbasierte und eine grafische Version mit Pygame.
Der Schwerpunkt von Kapitel 3, »Hi! I’m Eliza«, liegt auf grundlegenden Konzepten, die für die Entwicklung interaktiver, regelbasierter Systeme zentral sind. Sie lernen, wie man reguläre Ausdrücke einsetzt, um Texte gezielt zu analysieren und Muster zu erkennen – ein Prinzip, das auch in modernen Sprachmodellen wie ChatGPT verwendet wird. Darüber hinaus erfahren Sie, wie man Dateioperationen nutzt, um Regeln und Antworten dynamisch zu speichern und aus Dateien zu laden. Ein weiterer zentraler Aspekt ist das Entwurfsmuster Model View Controller (MVC), das Ihnen zeigt, wie Sie Software klar strukturiert, wartbar und erweiterbar gestalten – eine Fähigkeit, die weit über das Eliza-Projekt hinaus von Bedeutung ist.
Der Schwerpunkt von Kapitel 4, »Eliza revamped«, liegt auf einer Einführung in Pygame – denn die grafische Version von Eliza wird mit Pygame umgesetzt und bietet eine benutzerfreundliche Oberfläche mit selbst entwickelten Komponenten wie Scrollbalken, Textfeldern und Buttons, die das Gespräch mit Eliza visuell darstellt. Dabei werden Sie das in Kapitel 3 eingeführte Model-View-Controller-(MVC-)Muster vertiefen, das ein weit verbreitetes Entwurfsmuster in der Softwareentwicklung ist. Durch die Anwendung des MVC-Musters werden Sie lernen, wie man sauberen und modular aufgebauten Code schreibt, der leicht zu erweitern und zu warten ist. Dieses Wissen ist nicht nur für Eliza relevant, sondern darüber hinaus auch für die Entwicklung komplexerer Spiele und Anwendungen.
Eliza ist nicht nur historisch bedeutsam, sondern ein hervorragendes Einstiegsprojekt: Sie lernen dabei, wie regelbasierte Systeme funktionieren und wie man Interaktion gestaltet – und Sie erhalten ganz nebenbei einen ersten praktischen Einblick in Prinzipien, die auch komplexe KI-Systeme wie LLMs nutzen.
1.4.2 Nim und der Minimax-Algorithmus
Nach Eliza widmen wir uns dem Spiel Nim, einem mathematischen Strategiespiel, das sich hervorragend eignet, um grundlegende Konzepte der künstlichen Intelligenz (KI) zu erklären und zu veranschaulichen. Nim wird mit einer Reihe von Objekten (z. B. Steinen oder Münzen) gespielt, die in mehreren Haufen angeordnet sind. Die Spieler nehmen abwechselnd eine beliebige Anzahl von Objekten von einem einzigen Haufen weg. Der Spieler, der das letzte Objekt nimmt, gewinnt (oder verliert, je nach Variante). Die Einfachheit des Spiels macht es zu einem idealen Kandidaten, um den Minimax-Algorithmus zu erklären, einen der grundlegendsten und wichtigsten Algorithmen in der KI.
Minimax wird in vielen Spielen verwendet, um die beste Strategie zu finden. Wir werden diesen Algorithmus in späteren Kapiteln Schritt für Schritt implementieren und optimieren, indem wir das Alpha-Beta-Pruning einführen, eine Technik, die die Effizienz von Minimax erheblich steigert, indem unnötige Berechnungen vermieden werden.
Sie werden auch hier über zwei Kapitel hinweg zwei Versionen von Nim implementieren: Kapitel 5, »Nim«, zeigt Ihnen, wie Sie eine konsolenbasierte Version entwickeln. Eine grafische Version mit Pygame erstellen Sie in Kapitel 6, »Nim unleashed«. Beide Versionen werden den Minimax-Algorithmus verwenden, um den besten Zug zu berechnen, aber sie unterscheiden sich in der Art und Weise, wie sie mit dem Benutzer interagieren:
-
Konsolenbasierte Version: Diese Version dient dazu, die grundlegende Funktionsweise von Nim und dem Minimax-Algorithmus zu verstehen. Auf Konsolenbasis wird es dem Benutzer ermöglicht, gegen einen KI-Gegner zu spielen, der den Minimax-Algorithmus verwendet, um optimale Züge zu machen. Hier werden Sie lernen, wie man den Spielzustand in der Konsole darstellt und Benutzereingaben verarbeitet.
-
Grafische Version mit Pygame: Die grafische Version von Nim bietet eine benutzerfreundliche Oberfläche, die das Spiel visuell darstellt. Sie werden Pygame verwenden, um das Spielfeld, die Steine und die Benutzeroberfläche zu zeichnen. Auch hier wird der Minimax-Algorithmus verwendet, um den KI-Gegner zu steuern. Diese Version wird das Model-View-Controller-(MVC-)Muster verwenden, um den Code sauber zu strukturieren und die verschiedenen Komponenten des Spiels zu trennen.
Sie lernen in Kapitel 5, »Nim«, und Kapitel 6, »Nim unleashed«, wichtige Prinzipien des Clean Codings kennen, etwa eine klare Ordnerstruktur, die die einzelnen Komponenten des Spiels sauber voneinander trennt. Das sorgt nicht nur für Übersichtlichkeit, sondern auch für bessere Wartbarkeit. In Kombination mit dem MVC-Muster erfahren Sie, wie man modular und strukturiert programmiert – eine Fähigkeit, die weit über die Spieleentwicklung hinaus in der Softwarepraxis gefragt ist.
Schritt für Schritt entwickeln wir eigene GUI-Komponenten und erweitern sie gezielt. Dabei vertiefen Sie Ihr Verständnis für die Funktionsweise grafischer Oberflächen und lernen, wie man diese benutzerfreundlich und flexibel gestaltet.
1.4.3 Tic-Tac-Toe und Reinforcement Learning
Tic-Tac-Toe zählt zu den einfachsten und bekanntesten Spielen der Welt – und ist gleichzeitig ein ideales Spielfeld, um zentrale Konzepte der künstlichen Intelligenz zu vermitteln. Gespielt wird auf einem 3×3-Raster, wobei zwei Spieler abwechselnd ihre Symbole setzen. Wer zuerst drei Symbole in einer Reihe, Spalte oder Diagonale platziert, gewinnt. Trotz seiner Schlichtheit bietet das Spiel eine hervorragende Plattform zur Implementierung und zum Vergleich unterschiedlicher KI-Strategien.
In Kapitel 7, »Tic-Tac-Toe«, wird Tic-Tac-Toe nicht nur umgesetzt, sondern gezielt als Experimentierfeld für KI-Techniken genutzt. Sie entwickeln zwei KI-Spieler: einen auf Basis des Minimax-Algorithmus, einen weiteren mit Reinforcement Learning unter Verwendung von Q-Tables. Ergänzt wird das Projekt durch eine eigens entwickelte grafische Oberfläche mit Pygame, die nicht nur das Spielfeld visualisiert, sondern auch Buttons, Menüs und Statusanzeigen umfasst.
Nachdem Sie bereits mit Backtracking und Rekursion vertraut sind, widmen wir uns in Kapitel 8, »Tic-Tac-Q«, dem nächsten Schritt: dem Reinforcement Learning. Diese Lernmethode ermöglicht es einem Agenten, durch wiederholtes Ausprobieren optimale Entscheidungen zu treffen, und das ganz ohne vorgabenbasiertes Training. Beim Q-Learning, das wir hier einsetzen, lernt der Agent durch das Speichern und Aktualisieren erwarteter Belohnungen für Aktionen in bestimmten Zuständen.
Zunächst wird die Q-Learning-KI als textbasierte Konsolenanwendung umgesetzt, um das grundlegende Prinzip nachvollziehbar zu machen. Anschließend bleibt es Ihnen überlassen, diese Variante zu einer grafischen Version mit Pygame auszubauen. Dies ist eine ideale Gelegenheit, das Gelernte zu vertiefen und Ihre Fähigkeiten in der GUI-Entwicklung weiter auszubauen.
1.4.4 Reversi
Nach Tic-Tac-Toe wenden wir uns Reversi (auch bekannt als Othello) zu, einem klassischen Brettspiel, das oft als Benchmark für KI-Algorithmen verwendet wird. In Kapitel 9, »Black & White«, werden wir nicht nur verschiedene KI-Algorithmen wie Minimax, Alpha-Beta-Pruning und heuristische Bewertungsfunktionen untersuchen, sondern auch ein Menü im Spiel implementieren, aus dem der Spieler seinen Gegner auswählen kann. Jeder Gegenspieler basiert auf einem anderen Algorithmus und hat einen charakteristischen Namen, der seine Spielweise widerspiegelt. Ich habe ChatGPT die Charakteristika der Spieler mit auf den Weg gegeben und nach Namen für Spieler gefragt. Hier sind die Namen, die das LLM für mich entworfen hat:
-
Planlos Peter: ein zufällig agierender Gegner, der keine Strategie...




