• Herzlich Willkommen

      Hallo, ich freu mich, dass du auch diese Woche wieder mit dabei bist! Heute wollen wir den Apfel zu unserem Spiel hinzufügen und wir wollen, dass unsere Schlange diesen Apfel auch einsammeln kann. Ich wünsche dir ganz viel Spaß beim ausprobieren, lernen und entdecken. Lass uns keine Zeit verlieren und direkt loslegen!


    • Der RGB-Farbraum

      Bevor wir gleich loslegen lass uns eine Sache, die wir in den letzten Wochen bereits mehrfach verwendet haben, noch einmal genauer betrachten. Die Rede ist von den Farben in Pygame. Wir haben schon Schwarz ((0,0,0)) und Gelb ((255,255,0)) verwendet und kennengelernt. Aber woher weiß dein Computer eigentlich, welche Farbe mit welcher Zahlenkombination gemeint ist? Python arbeitet mit RGB. Die Abkürzung RGB steht für Rot, Grün und Blau. Es handelt sich hierbei um ein Modell, mit dem bestimmte Farbwerte angegeben werden können.

      Mit den drei Grundfarben Rot, Grün und Blau lassen sich so ziemlich alle Farben, die sogenannten Lichtfarben darstellen. Diese werden dazu in einem bestimmten Verhältnis gemischt. Dieses Mischverhältnis werden mit den Zahlen angegeben. Willst du zum Beispiel Rot verwenden, musst du das Verhältnis (255,0,0) verwenden, denn für Rot brauchen wir ganz viel Rot, kein Grün und auch kein Blau. Um Gelb zu erhalten, mischen wir Rot mit Grün und Blau brauchen wir auch hier nicht. So entsteht der Farbcode (255,255,0) den wir ja bereits verwendet haben. Das kannst du auch sehr gut auf folgendem Bild sehen.



      Man nennt den RGB-Farbraum auch „Additive Farbmischung“ oder „Additiver Farbraum“ denn im RGB-Farbraum wird, im Unterschied zur subtraktiven Farbmischung, Licht verschiedener Farbe auf dieselbe Stelle gelenkt und überlagert (addiert) sich. Die Additiven Farbmischungen werden in erster Linie für die Farbdarstellung an digitalen Monitoren, wie deinem Computer, dem Fernseher oder einem Handy, verwendet. Für nicht-digitale Farbdarstellungen verwendet man einen anderen Farbraum. Du kannst dir nun zum besseren Verständnis dieses Video ansehen:

      Mit dem RGB-Farbraum kannst du rund 16 Millionen verschiedene Farben mischen also sicherlich auch deine Lieblingsfarbe. Genau das wollen wir jetzt einmal ausprobieren. Verwende hierfür diesen Link. Hier kannst du deine Lieblingsfarbe zunächst einmal auswählen. Verschiebe hierfür die Kreise, die ich hier markiert habe, bis du im Fenster links die Farbe siehst, die du gerne haben möchtest. Wenn du dich für eine Farbe entschieden hast, siehst du unterhalb verschiedene Farbe-Codes. Wir interessieren uns aktuell aber nur für den RGB-Farbcode. Hier werden dir jetzt drei Zahlen angezeigt.



      Diese drei Zahlen kannst du nun an folgende Stelle in deiner Funktion „draw“ einfügen und dein Spiel einmal starten. Jetzt wird dein Spieler in deiner Lieblingsfarbe gezeichnet werden.



    • Vorschau

      Heute wollen wir den Apfel zu unserem Spiel hinzufügen und darüber hinaus die Logik dafür implementieren, dass unser Apfel nach jedem einsammeln wieder neu auf unserem Spielfeld platziert wird. Hier habe ich dir 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:

        


    • Snake

      Hier siehst du einmal wie unser Programm am Ende des heutigen Kurses aussehen soll. Sollte es später einmal nicht funktionieren, 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.

      Als aller erstes wollen wir einen Apfel zeichnen. Hierfür erstellen wir zunächst wieder zwei Variablen. Sie entsprechen den x- und y-Koordinaten an denen unser Apfel zu Beginn des Spieles gezeichnet werden soll.


      Um den Apfel nun zeichnen zu lassen, fügen wir nun folgende Zeile in unsere „draw“-Funktion hinzu. Es ist das selbe Prinzip wie bei unserem Spieler-Rechteck: Wir sagen unserem Computer erst wo er das Rechteck zeichnen soll, dann welche Farbe das Rechteck haben soll und anschließend an welche Stelle das Rechteck gezeichnet wir und wie groß es sein soll. Na? Weißt du welche Farbe unser Apfel mit dem Farbcode (255,0,0) haben wird? zwinkernd

      Jetzt kannst du dein Spiel einmal starten. Du kann deinen Apfel noch nicht einsammeln und er wird auch noch nicht umpositioniert. Das wollen wir jetzt ändern.

      Wenn du mit deinem Spieler einen Apfel eingesammelt hast, bekommst du einen Punkt. Diese wollen wir zählen. Hierfür kannst du nun außerhalb deiner Schleife die Variable „points“ anlegen welche den Wert „0“ speichert, denn zu Beginn haben wir ja noch keinen Apfel eingesammelt.

      Um nun weiter mit unseren Rechtecken arbeiten zu können, speichern wir diese beide in Variablen ab. Tippe hierfür diese Zeilen in deine While-Schleife:

      Wir wollen unseren Apfel, nach dem ersten Einsammeln, zufällig (eng. random) auf dem Spielfeld positionieren. Hierfür verwenden wir ein von Python vorgefertigtes Modul, welches zufällige Zahlen erstellt. Dieses Modul müssen wir zunächst wieder importieren. Schreibe hierfür folgende Zeile an den Anfang deines Programms:

      Nun haben wir alle Komponenten erstellt, die wir benötigen, um unseren Apfel einsammeln zu können, um die Punkte zählen zu können und um den Apfel nach dem Einsammeln wieder neu auf dem Spielfeld zu positionieren. Jetzt müssen wir diese Komponenten nur noch zusammenbringen. Das tun wir mit folgenden if-Befehl:


      Doch was genau passiert hier eigentlich? „if playerRect.colliderect(apple):“ bedeutet so viel wie „wenn das Spielerrechteck mit dem Apfelrechteck kollidiert“. Der Codeblock unterhalb des if-Befehls wird also nur dann ausgeführt, wenn es einen Zusammenstoß zwischen diesen beiden Rechtecken gibt. Wenn die Kollision dann stattgefunden hat, werden zunächst die Punkte um eins hochgezählt. Anschließend werden die x- und die y-Koordinate des Apfels zufällig neu gesetzt. „random.randint(15, 375)“ wählt dann zufällig eine ganze Zahl zwischen 15 und 391 aus. Diese Grenzen müssen wir setzen, damit der Apfel weiterhin auf dem Spielfeld gezeichnet wir und nicht außerhalb. Zu guter Letzt geben wir „Yummy“ aus, denn Äpfel sind ja schließlich ausgesprochen lecker. lächelnd

      Sobald wir das Spiel verloren haben, wollen wir wissen wie viele Äpfel wir gesammelt haben. Hierfür schreiben wir ganz am Ende unseres Spiels noch folgende Zeile.


      Nun kannst du dein Spiel starten und dein selbst programmiertes Spiel spielen. Na? Wie hoch ist dein höchster Punktestand gewesen?


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

    • Ausblick

      Unser Spiel lässt sich nun richtig spielen. Wir können unseren Spieler steuern, wir können Punkte machen indem wir die Äpfel einsammeln und wir verlieren das Spiel, wenn der Spieler den Rand berührt. Unser Snake-Spiel ist also quasi fertig. Allerdings ist unsere Schlange noch nicht wirklich eine Schlagen. In dem original Spiel wächst die Schlange jedes mal, wenn sie einen Apfel gegessen hat. Genau das wollen wir nächste Woche zu unserem Spiel hinzufügen. Ich freue mich, dich nächste Woche wieder bei diesem Kurs begrüßen zu dürfen.