Projekt Snake
Kleine Verbesserungen
Das letzte Kapitel hatte es in sich, Ihr habt das aber sehr gut gemeistert! Als "kleine Zwischenmahlzeit" gewissermaßen hier 2 kleine Verbesserungen.
Der Grund dafür, dass wir eine Spur ziehen und nicht die Schlange bewegen, liegt darin, dass wir hinter der Schlange noch nicht aufräumen.
Das Fenster wird standardmäßig mit schwarzem Hintergrund ausgeliefert. Das
geschieht aber nur einmalig bei Start des Programms. Deshalb müssen wir in die
Schleife vor dem Aufruf von
pygame.display.update()
noch das Fenster füllen. Der Befehl dazu
ist denkbar einfach und lautet für unseren Fall
fenster.fill(SCHWARZ)
. Wenn Ihr eine andere Farbe als Hintergrund wollt
– nur zu,
Ihr wisst ja jetzt wie es geht.
Die zweite Verbesserung betrifft die Abfrage, ob die Schlange noch im Fenster ist, oder sich bereits außerhalb befindet. Dazu führen wir eine weitere if-Bedingung ein.
Wir kennen schon alle Parameter dafür, die Breite und Höhe des Fensters und die x- und die y-Position der Schlange (also des oberen linken Punktes des Quadrats, ich wollte es nur nochmal gesagt haben...).
Die Abfrage muss also folgendermaßen sein:
- Wenn die
x-Position größer oder gleich der aktuellen Breite des Fensters ist, ist die Schlange rechts aus dem Fenster gekrochen. - Wenn die
x-Position kleiner als 0 ist, ist die Schlange links aus dem Fenster gekrochen. - Wenn die
y-Position größer oder gleich der aktuellen Höhe des Fensters ist, ist die Schlange unten aus dem Fenster gekrochen. - Wenn die
y-Position kleiner als 0 ist, ist die Schlange oben aus dem Fenster gekrochen
Und sollte eine der Bedingungen zutreffen, ist das Spiel verloren.
Also, der verbesserte Code in der Funktion spielschleife_aufrufen()
sieht bei mir so aus:
...
elif event.key == pygame.K_DOWN:
snake_bewegung_x = 0
snake_bewegung_y = quadrat_seite
# Abfrage, ob die Schlange aus dem Fenster verschwindet.
# Wenn ja, dann hoert das Spiel auf
if snake_x >= BREITE or snake_x < 0 or snake_y >= HOEHE or snake_y < 0:
print('Verloren!')
spielen = False
# Wenn nein, wird
# - die Veraenderung als neue Position gespeichert
# - und das Fenster wird neu aufgebaut
else:
snake_x += snake_bewegung_x
snake_y += snake_bewegung_y
fenster.fill(SCHWARZ)
pygame.draw.rect(fenster, ROT, [snake_x, snake_y, quadrat_seite, quadrat_seite])
pygame.display.update()
zeit.tick(snake_geschwindigkeit)
...
Zeit für ein kleines Fazit. Was haben wir bis hierhin programmiert?
- Wir haben ein Spielfenster definiert
- In diesem Fenster können wir ein Quadrat erscheinen lassen
- Mit Hilfe der Pfeiltasten, können wir das Quadrat in 4 Richtungen bewegen
- Kommt das Quadrat bei seiner Bewegung über die Abmessung des Fensters hinaus, wird das Spiel beendet
- Wenn der Spieler das X im Fenster drückt, wird das Spiel ebenfalls beendet
Probiert jetzt gerne Größen, Farben, Geschwindigkeit und Hintergründe aus, macht Euch mit dem Code bis hierhin vertraut.
Inhaltsverzeichnis:
1. Vorwort2. Das Projekt
3. Vorarbeiten
4. Projekt Snake
4.1. Der Funktionsumfang
4.2. Die Planung der Umsetzung
4.3. Das Coden
4.3.1. Das Grundgerüst
4.3.2. Das Fenster
4.3.3. Der Schlangenkopf
4.3.4. Die Bewegung der Schlange
4.3.5. Kleine Verbesserungen
4.3.6. Das Futter platzieren
4.3.7. Die Schlange wächst
4.3.8. Den Spielstand ausgeben
4.3.9. Die Wiederholung
4.3.10. Der finale Stand
5. Abschluss