Gaulke | Spiele-KI mit Python programmieren | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 620 Seiten

Reihe: Rheinwerk Computing

Gaulke Spiele-KI mit Python programmieren

10 Klassiker von TicTacToe bis
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



Level-Up your Skills!

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
Gaulke Spiele-KI mit Python programmieren jetzt bestellen!

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...


Gaulke, Jens
Jens Gaulke ist Diplominformatiker, der nach 14 Jahren Lehrtätigkeit nun seit 12 Jahren im Bereich Informationssicherheit arbeitet. Er unterrichtete am bib International College in Paderborn Programmierung, Game Development, Skriptsprachen, Netzwerke, Datenbanken, Betriebssysteme, IT-Sicherheit und Software Engineering. Diese breite Lehrerfahrung prägt seinen Schreibstil: technisch präzise, aber immer mit dem Leser im Blick. Heute arbeitet Jens Gaulke im Bereich Informationssicherheit bei Arvato Systems. Seine Schwerpunkte liegen auf ISMS, BCM, ISO-Normen, Cloud Computing und Künstlicher Intelligenz. Als Schulungsverantwortlicher für Security Awareness weiß er, wie man komplexe Themen verständlich vermittelt. In seiner Freizeit fotografiert er, wird von zwei Katzen regiert und schreibt. Seine Themen sind so vielfältig wie sein Werdegang: Spieleprogrammierung, maschinelles Lernen, Kryptographie und allgemeine Informatik. Hauptsache Python, Hauptsache praxisnah.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.