Programmieren in Scratch 747

Wir wollen in Scratch die Grundlagen der Programmierung kennenlernen. Dafür werden wir zusammen in Scratch ein lustiges Spiel erstellen und uns zusätzlich verschiedene Konzepte einer Programmiersprache in Scratch und in einer textbasierten Programmiersprache näher ansehen.

Das Projekt: Affenzirkus

Wir wollen das Spiel „Affenzirkus“ erstellen, welches folgendes Spielprinzip hat:

  • Der Spieler steuert den Affen mit den Pfeiltasten nach links und rechts.
  • Die Fledermaus fliegt automatisch von links nach rechts.
  • Der Affe soll die Bananen nach oben werfen können.
  • Die Bananen bewegen sich immer mit dem Affen, außer sie werden nach oben geworfen.
  • Trifft die Banane die Fledermaus, verschwindet diese und erscheint an einer zufälligen anderen Position.
  • Die Fledermaus soll unterschiedlich schnell fliegen.
  • Der Spieler bekommt pro Treffer einen Punkt.
  • Nach einer gewissen Zeit wird das Spiel automatisch beendet und es werden die erzielten Punkte angezeigt.

Hier findest du eine Anleitung, wie man Mobile Controls (z.B.: Steuerung der Figur mit einem Tablet) in Scratch umsetzen kann.

Der Affe

Der Spieler steuert den Affen mit den Pfeiltasten nach links und rechts.

Die Bewegung kann auf zwei Arten programmiert werden:

Beide Arten erkennen, ob die Taste gedrückt wird. Bei der rechten Version reagiert die Figur schneller, da die Tasten andauernd in einer fortlaufenden Wiederholung überprüft werden.

Die Fledermaus

Die Fledermaus fliegt automatisch von links nach rechts.

Eine mögliche Bewegung der Fledermaus:

Die Bewegung und das Zurücksetzen der Fledermaus ist alles in einer fortlaufenden Wiederholung eingebettet. Die innere Wiederholung (Wiederhole bis Banane berührt wird) läuft so lange, bis die Bananen berührt wurden. Dann fängt alles wieder von vorne an.

Die Bananen

Der Affe soll die Bananen nach oben werfen können.
Die Bananen bewegen sich immer mit dem Affen, außer sie werden nach oben geworfen.

Die Banane wird in den Vordergrund geschoben und folgt dann solange dem Affen, bis der Spieler die Leertaste gedrückt hat. Dann bewegt sich die Banane nach oben. Am Ende der Bewegung erscheint die Banane am rechten Rand der Bühne und wartet, bis der Affe diese wieder aufsammelt.

Banane trifft Fledermaus

Die Fledermaus hat die bedingte Wiederholung, damit sie immer von links nach rechts fliegt, bis sie von der Banane getroffen/berührt wird. Hier erweitern wir den Code der Fledermaus, damit diese bei einem Treffer nach unten stürzt und eine Nachricht an alle Objekte sendet, damit die Banane auch weiß, dass sie getroffen hat.

Wenn die Banane nun die Nachricht „treffer“ empfängt, versteckt sich diese. Hier kann auch noch ein Punktezähler eingebaut werden. der die Treffer des Spielers zählt.

Timer und Spielende

Erweiterungen

  • Die Fledermaus soll zufällig eine Bewegungsgeschwindigkeit zugewiesen bekommen.
  • Die Bananen sollen zufällig, entweder am linken oder am rechten Rand erscheinen.
  • Nach Ablauf der Zeit soll der „Game Over“ Bildschirm nur angezeigt werden, wenn der Spieler zu wenig Treffer geschafft hat.
  • Animation der Figuren verschönern.
  • Alle Objekte starten ihren Code, wenn sie die Nachricht „START“ empfangen. Damit kann das Spiel am Ende erneut gestartet werden und eine mögliche Highscore Liste erhalten bleiben.
  • Die erreichten Punkte werden in einer Highscore Liste gespeichert, die am Ende des Spiels angezeigt wird.

Tipps

Bewegung von Objekten mit Animation

Wenn sich der Affe zum Beispiel zu schnell bewegt, also die Animation zu schnell abläuft oder wenn man nicht alle Kostüme bei der Bewegungsanimation nutzen möchte, kann man sich eine eigene Variable (bewegungAffe) erstellen.

Wenn der Nutzer eine Pfeiltaste drückt, wird die Bewegungsvariable auf 1 gesetzt und die Bewegung in einem eigenen Prozess (rechts) abgewickelt.

Highscore einer Liste hinzufügen

Am Ende des Spiels werden die Punkte in einer Highscoreliste hinzugefügt. Die hinzugefügten Highscores werden absteigend in die Liste eingefügt.

Zuerst benötigen wir eine Highscoreliste die die Einträge aufnimmt. Dann benötigen wir zwei Variablen (index, highscoreHinzugefügt). Wir schauen, ob der aktuelle Highscore größer als der Wert des aktuellen Element der Liste ist. Wenn ja, dann wird der Highscore an dieser Position eingefügt und die Untersuchung der Liste beendet.

Genutzte Konzepte

Ereignis

Ereignis „Wenn grüne Fahne angeklickt wird“ in Scratch.

Ereignis „Wenn die Pfeiltaste nach rechts gedrückt wird“ dann bewege die Figur nach rechts.

Fortlaufende Wiederholung

Es wird solange der Code ausgeführt, bis das ganze Programm beendet wurde oder der Codeblock „stoppe alles“ aufgerufen wird.

Zählwiederholung

Der y-Wert des Objekts wird 30mal um 10 erhöht.

Bedingte Wiederholung

Es wird so lange wiederholt, bis eine Bedingung zutrifft. In diesem Beispiel folgt die Banane dem Affen so lange, bis die Leertaste gedrückt wurde.

Operatoren

Im ersten Beispiel wird der Vergleichsoperator genutzt, um zu prüfen, ob die Variable „timer“ gleich 0 ist. Beim nächsten Beispiel wird eine zufällige Zahl zwischen 30 und 140 erzeugt.

Variable

Hier wurde eine Variable „timer“ erstellt. Der Wert der Variable wird auf 30 gesetzt und jede Sekunde wird der Variable 1 abgezogen, bis „timer“ gleich 0 ist.

Liste

Will man mehrere Werte speichern, kann man eine Liste anstatt mehreren Variablen nutzen.

Methode

Alle Blöcke in Scratch sind Methoden, z.B.: „gehe 10er Schritt“. Mit Hilfe von „Meine Blöcke“ kann man eigene Methoden erstellen. Hier wurde z.B.: der Block „fügeHighscoreHinzu“ erstellt, der einen Highscore der Liste in absteigender Reihenfolge hinzufügt.

Links