Snake-Spiel in Python mit ChatGPT entwickelt
Lesedauer: 3 Minuten

Man hört ja immer wieder von ChatGPT und die Möglichkeit, dass die künstliche Intelligenz Aufgaben übernehmen kann und einen bei verschiedenen Aufgaben unterstützen kann. Ich dachte mir einfach mal, dass ich versuchen möchte das klassische Snake-Spiel in Python mit der Hilfe von ChatGPT zu entwickeln.

Zunächst habe ich ChatGPT unter der URL chat.openai.com geöffnet und den folgenden Prompt abgeschickt.

Please help me to write a small python game: Snake. I’m completly new to the python programming. So please also explain how I can start developing and the game and why the steps are down in this order.

In der ersten Antwort gratuliert ChatGPT zur Überlegung ein kleines Spiel zu entwickeln, um so das Programmieren zu erlernen. Anschließend bekommt man eine Checkliste mit einem Grundgerüst. Zunächst muss Python installiert werden und anschließend die Bibliothek pygame.

Auch das erste Grundgerüst wird bereits geliefert:

import pygame
import sys

# Initialize Pygame
pygame.init()

# Set up the screen
screen = pygame.display.set_mode((600, 400))

# Game loop
while True:
    # Event handling
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Game logic (e.g., move the snake)

    # Drawing code (draw the snake, food, etc.)

    # Update the display
    pygame.display.flip()

    # Frame rate control
    pygame.time.Clock().tick(10)  # 10 frames per second

Das Ergebnis sieht nun wie folgt aus

Die Idee hinter der Antwort ist natürlich, dass man nun selbst beginnt die eigentliche Spiellogik zu schreiben. Aber für diesen Blog-Beitrag wollen wir ja schauen, ob ChatGPT in der Lage ist das Spiel vollständig zu entwickeln. Daher habe ich nun die Aufgabe gestellt den Titel für das Fenster und die Hintergrundfarbe zu ändern. Das stellt keine große Herausforderung dar und der passende Code wird geliefert.

# Set up the screen
screen = pygame.display.set_mode((600, 400))

# Set the title of the window
pygame.display.set_caption("Snake Game by tsjdev-apps")

Damit haben wir das Spielfeld soweit schon einmal fertig.

Natürlich fehlt jetzt noch so einiges an Logik. Daher habe ich nun nach der Implementierung für die eigentliche Schlange gefragt und gleichzeitig die Bitte geäußert auch eine Steuerung per W, A, S, D oder aber den Pfeiltasten direkt zu implementieren. Ich werde jetzt nicht mehr den eigentlichen Code hier posten, sondern verweise auf mein GitHub-Repository. Hier findet ihr die verschiedenen Versionen des Spiels zum Nachverfolgen. Aber die Snake wurde erzeugt und lässt sich auch steuern.

Was auffällt ist die Tatsache, dass man das eigentliche Spielfeld verlassen und kann und das Spiel dann nicht von vorne beginnt, sondern die Schlange einfach den Bildschirm verlässt. Daher erfolgte als nächsten der Wunsch der Kollision. Dabei sollte die Umrandung als auch die Schlange selbst als Kollision gewertet werden und das Spiel dann zurückgesetzt werden.

Zwar lässt sich die Snake jetzt bereits steuern, aber es fehlt noch das Futter, welches im nächsten Schritt hinzugefügt werden sollte. Dabei gilt dann auch direkt die Regel, dass die Schlange länger wird, wenn das Futter „gefressen“ wurde und per Zufall soll ein neues Futter erscheinen.

Damit ist das eigentliche Spiel soweit schon fertig. Trotzdem habe ich ChatGPT gebeten noch einen Score in der oberen linken Ecke anzuzeigen und bei jedem Fressen des Futters sollen 10 Punkte hinzugefügt werden.

Damit man bei einem Fehler noch die Chance hat seinen Score zu sehen und nicht direkt mit einer neuen Runde zu starten, sollte im letzten Schritt noch ein Hinweis angezeigt werden und das Spiel erst beim Drücken einer beliebigen Taste neu gestartet werden.

In sieben einfachen Schritten haben wir den Spieleklassiker durch die künstliche Intelligenz erschaffen. Dabei beinhalten die Antworten von ChatGPT auch jeweils Erklärungen, so dass man nicht nur den jeweiligen Code, sondern auch ein paar weiterführende Hinweise erhält, so dass man das nächste Spiel dann selbst entwickeln kann.

Wie bereits im Text angekündigt, findet ihr alle Varianten des Spiels in meinem GitHub-Profil.

Sketch2Code AppCenter.Analytics: Eigene Events tracken Arbeiten mit ZIP-Dateien in .NET