Multiplayer Pacman AI-Challenge

Konzept

Es treten zwei Bots gegeneinander an. Es sind Beispiele ethalten, eigene Bots können als Klassen in bot.py implementiert werden.

Das Spielfeld ist wie ein Pacman-Labyrinth aufgebaut. Die Bots treten mit ein oder zwei Figuren gegeneinander an. Es wird abwechselnd um jeweils ein Feld weitergezogen. Es gibt die Möglichkeit, nicht zu ziehen.

Derjenige Bot gewinnt, dessen Punktzahl am Ende des Spiels die höchste ist.

Aufwendige Grafik Einfache Grafik
Aufwendige Grafik Einfache Grafik

Nutzung

  1. Repository herunterladen
    Es gibt zwei Entwicklungszweige: den offiziellen master und den gemeinschaftlich entwickeltelten development
    Lade nun das Repository als ZIP-Archiv herunter oder clone es mit git.
    git clone https://github.com/RandInt83/AI-Challenge.git

  2. Instaliere Abhängigkeiten
    Zum Ausführen werden Numpy, Pygame und Matplotlib benötigt. Instaliere sie mit pip
    pip3 install numpy pygame matplotlib

(Optional) Eine Text-To-Speech Engine kann ein durchgeführtes Turnier moderieren. Hierfür ist eine Installation des Pakets pyttsx notwendig
pip3 install numpy pygame matplotlib

  1. Programm starten
    Starte das Programm mit Python 3.x
    python3 main.py

Turniermodus

Die Datei tounament.py startet ein Turnier. In es können belibig viele Teams, dessen Bots aus bot.py geladen werden können, an einem Turnier teilnehmen. Das Turnier wird mit python3 turnament.py gestartet. Es spielt dann jedes Team gegen jedes andere Team auf zufälligen Karten.

Steuerung

Taste Funktion
0 Spiel starten
r Spiel neustarten
q Spiel beenden und im Turniermodus das nächste Match aufrufen.
t Grafik von Einfach auf Aufwendig schalten
1 Bildwiederholrate auf 1 FPS
2 Bildwiederholrate auf 3 FPS
3 Bildwiederholrate auf 10 FPS
4 Bildwiederholrate auf 20 FPS
5 Bildwiederholrate auf 40 FPS
6 Maximale Geschwindigkeit

Karten erstellen

Im Verzeichniss maps können eigene Karten erstellt werden. Ein Pixel entspricht einem Block auf dem Feld und seine Farbe definiert die Art des Blockes.

Die PNG-Dateien müssen mit einer Nummer ab 1 benannt sein: M<int>.png, also z.B. M1.png; M2.png; M3.png.

In map.py kann eingestellt werden welche Karten geladen werden sollen und ob vor dem Spiel die Karten zufällig gewählt werden sollen.

Block Farbe RGB-Code
Wand Schwarz 0, 0, 0
Pellet Weiß 255, 255, 255
Position Team Rot Rot 255, 0 ,0
Position Team Gelb Gelb 0, 255, 0
Position Team Blau Blau 0, 0, 255
Position Team Grün Grün 255, 255, 0
Karte Karte 1 M1.png Karte 2 M2.png Karte 3 M3.png Karte 4 M4.png
PNG-Dateien Karte M1.png Karte M2.png Karte M3.png Karte M4.png
Karten Demo Karte M1 Demo Karte M2 Demo Karte M3 Demo Karte M4

Beitragen

In CONTRIBUTE.md befindet sich ein Workflow zur Mitarbeit an diesem Projekt.