Homepage von Papa

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

Schöner Erfolg, oder?

Probiert jetzt gerne Größen, Farben, Geschwindigkeit und Hintergründe aus, macht Euch mit dem Code bis hierhin vertraut.

  • Zurück
  • Weiter

Inhaltsverzeichnis:

1. Vorwort
2. 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

© by Papa. Die Seite ist online seit 2020.

Menu

  • Startseite
  • Projekte
    • Übersicht aller Projekte
    • Nachbau Snake
    • Taschenrechner
  • Helferlein
    • Übersicht Hilfprogramme
    • Fonts in pygame
    • Quellcode nach HTML
    • Text nach HTML
  • Impressum
  • Disclaimer

Modal content goes here