• Herzlich Willkommen

      Hallo, ich freu mich, dass du auch in unserer letzten, gemeinsamen Woche wieder mit dabei bist! Heute wollen wir den Feinschliff an unserem Spiel vornehmen und somit unseren Kurs abschließen. Ich wünsche dir ganz viel Spaß beim ausprobieren, lernen und entdecken. Lass uns keine Zeit verlieren und direkt loslegen!


    • Vorschau

      Unser Spiel ist eigentlich fertig. Die Logik steht und es lässt sich einwandfrei spielen. Heute wollen wir uns noch an den Feinschliff machen. Wir werden Den aktuellen Punktestand auf unserem Bildschirm anzeigen lassen und wir werden einen „Game Over Bildschirm“ anzeigen lassen, wenn wir unser Spiel verloren haben. Hier kannst du eine kleine Vorschau von dem sehen, was wir heute vor haben.


      Hier habe ich dir außerdem ein kleines Video von dem Spiel erstellt. Dieses kannst du dir jetzt auch einmal ansehen , um dir ein Bild von dem zu machen, was wir heute schaffen wollen:



    • Punkte Anzeigen

      Unseren heutigen Kurs habe ich wieder in zwei Teile geteilt. Den Code der ersten Hälfte „Punkte Anzeigen“ kannst du nun hier sehen. Sollte es später einmal nicht funktionieren oder solltest du dir einmal unsicher sein wo genau du eine Code-Zeile hinschreiben sollst, gleiche deinen Code mit diesem hier ab. Solltest du deinen Fehler nicht finden, kannst du mir gerne jederzeit eine Nachricht schreiben.

      ------------------------------------------------------------------------------------------------------------------------------

      Jetzt wollen wir alle Änderungen einmal durchgehen. Währenddessen kannst du diese in deinem Code übernehmen.

      Um unsere Punkte auf den Bildschirm zeichnen zu können, benötigen wir zunächst einmal eine Schriftart und die Größe der Schrift, welche wir in einer Variable speichern werden um diese dann später im Programm verwenden zu können. Tippe hierfür diese Zeile ab: 


      Für das Zeichnen der Punkte werden wir eine neue Funktion erstellen. Diese Funktion nennen wir „score“ und möchte den Parameter „points“ übergeben bekommen:


      Die Variable „value“ speichert den Wert, der später auf unserem Bildschirm angezeigt werden soll. „score_font“ entspricht unserer Variable, in der wir eben die Schriftart gespeichert haben. Die Funktion „render()“ sorgt für das Anzeigen von Text auf unserem Bildschirm. In den Klammern geben wir zunächst einmal an was wir schreiben wollen. In unserem Fall wollen wir zunächst einmal das Wort „Punkte: „ schreiben und dahinter die Anzahl unserer Punkte. Um die Zahl als String anzeigen zu lassen, verwenden wir die Funktion „str()“ und schreiben in die Klammern die Variable „points“. Die Funktion wandelt dann automatisch den Integer-Wert von „points“ in einen String um. Wenn du dir jetzt unsicher bist was ein String und was ein Integer nochmal war, schaue noch einmal in dem Kurs der ersten Woche nach. Der nächste Parameter, den die Funktion übergeben bekommen will, ist ein Boolean-Wert. Wählen wir hier „True“, wird der Schriftzug schön und rund angezeigt. Würden wir hier „False“ schreiben, wäre die Schrift etwas verpixelter wie auf diesem Bild zu sehen ist:


      Der Unterschied ist nicht riesig, dennoch werden wir hier „True“ wählen. Das letzte Element der Parameter, die wir an die Funktion übergeben, ist die Farbe unserer Schrift. Um nun noch unsere Schrift auf unserem Bildschirm anzeigen zu lassen, verwenden wir die Zeile „screen.blit(value, [0, 0])”. Sie zeichnet dann, den String, welchen wir in “value” gespeichert haben, an die x- und y-Koordinaten [0, 0].

      Nun müssen wir nur noch die Funktion „score“ am Ende unserer While-Schleife aufrufen. Tippe hierfür diese Zeile ab:


      Nun kannst du dein Programm einmal starten und ausprobieren, alles funktioniert.



    • Game Over Bildschirm

      Nun wollen wir uns um den „Game Over Bildschirm“ kümmern, der dann angezeigt werden soll, wenn wir das Spiel verloren haben. Hier kannst du nun einmal den gesamten Code sehen. Sollte es später einmal nicht funktionieren oder solltest du dir einmal unsicher sein wo genau du eine Code-Zeile hinschreiben sollst, gleiche deinen Code mit diesem hier ab. Solltest du deinen Fehler nicht finden, kannst du mir gerne jederzeit eine Nachricht schreiben.

      -----------------------------------------------------------------------------------------------------------------------------------

      Für unseren „Game Over Bildschirm“ werden wir zwei unterschiedliche Schriftgrößen verwenden. Deshalb werden wir auch zwei weitere Variablen für unsere Schriftarten, unterhalb der ersten, anlegen. Tippe hierfür nun diese beiden Zeilen ab:

      Wir werden für den „Game Over Bildschirm“ wieder eine Funktion schreiben. Diese nennen wir „gameOver“. Tippe nun diesen Code-Block ab und anschließend wollen wir uns einmal ansehen was hier genau passiert:


      Mit der Zeile „screen = pygame.display.set_mode([500, 348]) “ ändern wir einfach nur die Größe unseres Bildschirmes der angezeigt wird. Die x-Größe ändern wir hier nämlich auf den Wert von 500. Die Zeile „screen.fill((50, 153, 213)) “ sorgt dafür, dass unser Hintergrund blau wir. Wenn dir die Farbe nicht gefällt, kannst du auch gerne eine andere wählen. „gameO“ und „repQuit“ sind die Variablen, in denen wir den Text bzw. den String speichern, welcher dann später auf dem Bildschirm angezeigt werden soll. Für „gameO“ verwenden wir die Schriftart „gameOverFont1“ welche ein wenig größer als „gameOverFont2“ ist. „repQuit“ wird in der Schriftart „gameOverFont2“ gezeichnet, denn es soll nur ein kleiner Hinweis an den Spieler sein, dass man das Spiel mit der Taste „c“ wiederholen und mit der Taste „q“ beenden kann. Die darauffolgenden, beiden Zeilen, sorgen dafür, dass unsere Strings wieder an die entsprechenden x- und y-Koordinaten gezeichnet wird. Zu guter letzt, updaten wir unseren Bildschirm wieder mit „pygame.display.update()“.

      Nun müssen wir unserem Computer noch sagen, wann er den „Game Over Bildschirm“ überhaupt anzeigen soll. Hierfür legen wir zunächst, oberhalb unserer While-Schleife, eine Hilfsvariable an, welche wir „close“ nennen. Diese soll erstmal den Boolean-Wert „True“ speichern. Tippe hierfür nun diese Zeile ab:


      Wenn wir unser Spiel verlieren, soll zunächst einmal unsere Variable „close“ gleich „False“ werden. Doch wann genau verlieren wir unser Spiel? Wir verlieren, wenn wir den Bildschirmrand berühren und wenn unsere Schlange sich selbst kreuzt. Kümmern wir uns erstmal um das Berühren des Bildschirmrandes. Hierfür verwenden wir einen if-Befehl. Wenn die Bedingungen unserer Schleife nicht mehr zutreffen, wird „close = False“.

      Diesen Teil unserer Schleifenbedingung, kannst du nun entfernen.


      Die zweite Möglichkeit, in der wir unser Spiel verlieren können ist die, in der wir die Schlange selbst kreuzen. Damit das Spiel in diesem Fall beendet wird, haben wir letzte Woche eine if-Bedingung geschrieben. In dieser wird „go = False“. Hier ersetzen wir jetzt einfach „go“ durch „close“.


      Doch was soll jetzt eigentlich passieren, wenn „close = False“ ist? Hierfür schreiben wir eine weitere While-Schleife in unserer Haupt-While-Schleife. Tippe nun diesen Code-Block ab und dann scheun wir uns einmal an was in ihr passiert:


      Die While-Schleife wird erst dann aufgerufen, wenn „close = False“ (also wenn wir unser Spiel verloren haben) ist. In der Schleife rufen wir zunächst die „gameOver“-Funktion auf. Dadurch wird der „Game Over Bildschirm“ angezeigt. In der darauf folgenden For-Schleife, fragen wir unseren Computer, ob die q- oder die c-Taste gedrückt wurde, denn unser Spiel soll sich nun mit der q-Taste beenden und mit der c-Taste wiederholen lassen. Wurde die q-Taste gedrückt, wird erst „go = False“ und dann „close = True“. Somit gehen wir erst aus der einen und dann aus der anderen Schleife heraus und somit wir unser Spiel beendet. Wird die c-Taste gedrückt, setzen wir zunächst alle Variablen zurück auf ihre Anfangswerte und setzen dann noch „close = True“. Dadurch wird der Bildschirm wieder verkleinert, unserer Schlange und der Apfel zurück auf ihre Anfangspositionen gesetzt, die Liste, mit allen Elementen der Schlange, wird geleert, die Länge der Schlange wird auf eins gesetzt, die letzte Richtung, die wir zwischengespeichert haben wird entfernt und die Punkte werden wieder auf Null gesetzt.

      Jetzt kannst du dein Spiel starten und ausprobieren. Zählen die Punkte richtig hoch? Kannst du die c-Taste verwenden um nach dem Verlieren noch einmal zu spielen? Und kannst du nach dem Verlieren dein Spiel mit der q-Taste beenden? Wenn das alles der Fall ist, hast du es geschafft. Herzlichen Glückwunsch!!



    • Wenn du nun soweit bist, dass dein Programm aussieht wie meins, kannst du es jetzt hier hochladen.

    • Bis zum nächsten Mal!

      Das war's mit dem Kurs. Ich freu mich, dass du bis hierhin dabei warst. Ich hoffe es hat dir Spaß gemacht dein Spiel zu programmieren und natürlich auch es zu spielen und dass du auch etwas lernen konntest. Pygame hat noch eine Menge weiter Funktionen. Wir könnten zum Beispiel unsere Schlange noch mit Grafik mehr wie eine Schlange aussehen lassen oder Musik zu unserem Spiel hinzufügen. Wenn dich jetzt der Ergeiz gepackt hat und du noch weiter an deinem Spiel arbeiten möchtest, wünsche ich dir ganz viel Spaß dabei und wenn du einmal nicht weiter weißt, kannst du mir gerne jederzeit schreiben und dann kann ich dir sicherlich weiter helfen. Ansonsten wünsche ich dir schöne Sommerferien. Ich würde mich sehr freuen, wenn wir uns bald in einem Kurs der Webakademie „wiedersehen“.

      Mit ganz lieben Grüßen deine Noa lächelnd