• Kostenlose Vektorgrafiken zum Thema Videospiel

    Funktionsaufbau Teil 2 und Spiel testen

    Du kannst bereits deinen Programmcode testen und hast dein Programm so weit erstellt, dass du das Spiel starten kannst. Um nun auch die Funktionen zum Spielen nutzen zu können, wie zum Beispiel durch Tasten drücken die Richtung der Raupe zu wechseln, müssen die letzten Lücken in den übrigen Funktionen gefüllt werden. Anschließend kannst du das Spiel testen.
    • Hier findest du die Lösung der Aufgabe von letzter Woche.

    • https://www.davetrost.com/static/media/shell.f48db705.pnganzeige_punkte():



      Wenn die Raupe ein Blatt frisst, soll der Punktestand erhöht und aktualisiert angezeigt werden. Das Erhöhen des Punktestandes geschieht in der Funktion starte_spiel(). In der Funktion anzeige_punkte(aktuelle_punkte) soll nun die Ausgabe bzw. das Aktualisieren erfolgen. Den Platzhalter pass kannst du jetzt löschen.



      Zum Anzeigen der Punkte verwendest du das Turtle-Objekt punkte_turtle, welches du zu Beginn im 1. Abschnitt definiert hattest. Die Ausgabe des punkte_turtle Objekts muss zu Beginn der Funktion gelöscht/geleert werden, damit sich die Ausgabe bei einer Aktualisierung des Punktestandes nicht überlagert, dafür gibt es die Funktion clear().


      Bevor die Position für die Ausgabe der Punkte definiert wird, sollte der Stift des punkte_turtle Objekts angehoben werden mit penup(), sonst zeichnest du noch Striche über deine Spielfläche.


      Die Position der Punkte soll in der oberen rechten Ecke erfolgen mit jeweils 50 Pixel Abstand zum Rand. Das Ermitteln der Position müsstest du selbstständig hinbekommen. In Abschnitt "Funktionen" hatte ich dir erklärt, wie man die Ränder ermittelt, ähnlich funktioniert es auch hier. Die halbe Breite des Fensters gibt dir den Pixelwert vom rechten Rand wieder. Nun sollen die Punkte aber 50 Pixel Abstand zum Rand haben. Also subtrahierst du von der halben Breite des Fensters noch die 50 Pixel (Wert für x). Gleiches gilt auch für die Höhe (Wert für y).

      Mit der Funktion setpos(wertX, wertY) kannst du das Objekt punkte_turtle an eine bestimmte Position setzen. In diesem Fall sollen die zuvor ermittelten x und y Werte verwendet werden.


      Zum Schluss erfolgt noch die Textausgabe. Dabei legst du zunächst wieder die Farbe mit color(farbnamen) fest. Mit der Funktion write(), die du bereits kennst, schreibst du den Punktestand. Anstelle eines Textes, wie du es bisher kennst, übergibst du jedoch die Variable aktuelle_punkte, die der Funktion bei Verwendung übergeben wird. Da diese Variable jedoch ein Zahlenwert ist (vom Typ Integer) konvertierst du diese in einen Text (String) mit str(aktuelle_punkte).


      Starte dein Programm. Jetzt solltest du oben rechts den Punktenstand sehen können.

    • https://www.davetrost.com/static/media/shell.f48db705.pngplatziere_blatt():


      Sobald die Raupe ein Blatt erreicht, wird die Funktion platziere_blatt() aufgerufen. Sie versetzt das Blatt an eine neue Position. Die Position soll dabei zufällig gewählt werden.

      Im Programm kannst du wieder pass löschen. Du wirst das Blatt zunächst verstecken mit der Funktion hideturtle(). Es gibt auch eine kurze Schreibweise ht(). Du kannst dir aussuchen was du benutzen möchtest.


      Anschließend setzt du die Position für x mit setx(zufaelligePositionX) und y mit sety(zufaelligePositionY). Du kannst auch die bereits bekannte Funktion setpos(zufaelligePositionX, zufaelligePositionY) verwenden. Wähle aus, was dir besser gefällt und für dich übersichtlicher ist.

      Um nun eine zufällige Position zu bekommen, verwendest du aus dem Modul random, dass du bereits importiert hast, die Funktion randint(kleinsteWert, groessteWert). Mit dieser Funktion erhältst du einen Wert der zwischen dem kleinsten angegebenen Wert und dem größten angegebenen Wert liegt. Im Fall für das Raupe-Spiel soll der Wert zwischen -200 und 200 liegen, sowohl für die x-Koordinate als auch für die y-Koordinate.


      Zum Abschluss der Funktion muss das Blatt wieder angezeigt werden, dies erfolgt mit dem Befehl showturtle(). Auch diesen Befehl gibt es wieder in Kurzform st() und es ist dir wieder überlassen, für welche Variante du dich entscheidest.


      In meinem Programmcode habe die bereits bekannten Befehle als Kommentar über die neue Variante geschrieben.

      Teste dein Programm lächelnd

    • https://www.davetrost.com/static/media/shell.f48db705.pngbewege_hoch():


      Nachdem du nun alle Funktionen, die das Spiel selbst betreffen befüllt hast, bleibt noch die Programmierung der Tasten, damit sich die Raupe steuern lässt.
      Da sich die Programmierung für die Bewegung hoch, runter, links und rechts ähneln und sich nur in den verwendeten Werten unterscheiden, erkläre ich die Programmierung anhand der Bewegung hoch.

      Lösche zunächst in der Funktion bewege_hoch() den Platzhalter pass raus.


      Wenn die Taste nach oben gedrückt wird, soll geprüft werden, ob sich die Raupe nach links oder rechts bewegt. Wenn ja, dann soll die Raupe die Richtung nach oben einnehmen. Die Richtung der Raupe ermittelst du mit heading() und mit setheading(wert) legst du eine Richtung fest. Im folgenden Bild habe ich die Werte dargestellt, wenn die Turtle in die jeweilige Richtung ausgerichtet ist.

      https://moodle.bildung-lsa.de/webakademie/pluginfile.php/3173/mod_page/content/3/Turtle-Ausrichtung.png

      Für dein Programm bedeutet es, wenn für die raupe heading() gleich 0 (für rechts) oder heading() gleich 180 (für links) zutrifft, soll die für die raupe setheading(90) erfolgen. (If-Bedingungen hatte ich bereits im Abschnitt "Funktionen" erklärt zur Funktion starte_spiel(), weshalb ich an dieser Stelle darauf verzichte.)

      Dein Programmcode würde wie folgt aussehen:


      Um nun diese Funktion an die "Pfeil nach oben"-Taste zu binden, verwendest du wieder die Funktion onkey(Funktionsname, 'Taste'), die du für das Starten des Spiels mit der Leertaste bereits kennengelernt hast. Füge die neue Programmzeile unter der bereits bestehenden onkey()-Funktion und der listen()-Funktion ein.

      Ich zeige dir in meinem Programmausschnitt den schon vorhanden Programmcode und die neu hinzugefügte Programmzeile:


      Teste dein Spiel!