Lösung Challenge 11: Hürdenlauf

Lösung

  • „player“ ist der Hürdenläufer und speichert das entsprechende Sprite. Man startet in der unteren linken Ecke und die Figur blinkt, damit man sie besser erkennt.
  • „hürden“ ist ein Array und speichert die einzelnen Sprites der Hürden
  • „start“ speichert einen booleschen Wert und verhindert mehrmaliges Starten während der Laufzeit
  • „b“ speichert einen booleschen Wert, ob man die Taste „B“ gedrückt hat oder nicht. Während des Springens soll man nicht erneut springen können.
  • „vJump“ sowie „vHürde“ speichern die Geschwindigkeit des Springens und der Hürden.
  • „score“ speichert die Punktzahl
  • „ticks“ speichert die Anzahl der vergangenen Ticks.

Mit A+B startet man das Spiel und ruft dann die entsprechende Logik in der Main-Funktion auf. Um erneutes Starten zu verhindern wird „start“ auf False gesetzt.

Die Taste „B“ ist für das Springen zuständig. Nur dann, wenn in „b“ False gespeichert ist, kann gesprungen werden. 

In einer ausgelagerten Endlosschleife überprüft man, ob die „B“ Taste gedrückt wurde oder nicht. Wenn „b“ auf True steht ist das der Fall und die Sprunganimation soll ausgeführt werden. Dazu wird die Position vier Mal um -1 in x-Richtung erhöht und dazwischen immer um die in „vJump“ definierte Zeit gewartet. 

Nach dieser Schleife wird erneut um diese Zeit gewartet, der Wert jedoch verdoppelt, damit der Hürdenläufer kurz in der Luft bleibt. 

Um auf den Boden zurückzukommen wird das Ganze wiederholt, die Position um +1 in x-Richtung geändert und dazwischen wieder pausiert.

Zuletzt wird „b“ auf False gesetzt, damit man erneut springen kann.

Wie man sieht, ähnelt die Funktion sehr stark der von Crashy Bird.

  • Die Berechnung der Punktzahl ist anders, da jetzt nicht mehr auf eine verlässliche Anzahl von Elementen im Array zurückgegriffen werden kann durch die zufälligen Höhen der Hürden. Um das zu umgehen, setzt man eine Hilfsvariable „deleted“ immer auf True, wenn ein Hürdenelement gelöscht wird. Danach kann man abfragen, ob „deleted“ True ist und erhöht die Punktzahl. Man muss „deleted“ dann nur wieder auf False zurücksetzen. Sollte in einem Durchlauf keine Hürde gelöscht werden, erhält man somit auch keinen Punkt.
  • Statt einer freien Stelle im Hindernis wird hier die Höhe der Hürde zufällig bestimmt. Ebenso werden die einzelnen Sprites diesmal von unten nach oben erstellt, da die Hürden immer auf dem Boden stehen sollen.
  • Wann die Hürde erstellt wird (hier: alle vier Ticks) oder wie viel schneller das Spiel jedes Mal wird (hier: Punktzahl * 5), ist frei wählbar

Challenge Master

Ich bin der Challenge Master. Hinter mir verbergen sich die Auszubildenden von Proact Deutschland. Gemeinsam füllen wir diesen Blog mit verschiedenen Projekten, um euch das Coden beizubringen.

 
Kommentare

Noch keine Kommentare vorhanden.

Hinterlassen Sie einen Kommentar