Elemente der Spielprogrammierung

Aus ComeniusWiki
Wechseln zu: Navigation, Suche

In diesem Kapitel sollen anhand einiger klassischer Spiele Elemente der Spielprogrammierung in Scratch erläutert werden.

Inhaltsverzeichnis

Auf Ziele schießen / Kollisionen

Wir wollen mit Hilfe von Scratch eine einfache Version von Asteroids nachbauen. Zu diesem Zweck werfen wir zuerst einen Blick auf eine etwas ausgefeiltere Version des Spiels.


Um das Spiel nachzubauen müssen wir folgende Fragen klären:


  • Wie kommt der Laserstrahl zum Raumschiff und wie passt er sich der Flugrichtung des Raumschiffs an?
  • Wie setzen wir den Antriebsstrahl des Raumschiffs graphisch um?
  • Wie stellen wir die Zerstörung des Asteroiden durch den Laserstrahl dar?
  • Wie können wir die Kollision zwischen Raumschiff und Asteroid darstellen?


Die drei letzten Probleme lassen sich relativ einfach lösen. Wir müssen nur unterschiedliche Kostüme für die entsprechenden Sprites anlegen und sie zum richtigen Zeitpunkt wechseln.

Scratch asteroid 1.JPGScratch asteroid 2.JPG


Der Laserstrahl

Für den Laserstrahl müssen wir folgendes beachten:

Scratch asteroid laser img.JPG

  • Der Strahl soll unsichtbar sein, wenn nicht geschossen wird.
  • Wird geschossen, muss der Strahl an die Position des Raumschiffs versetzt werden und in die richtige Richtung gedreht werden.
  • Trifft der Schuss, wird der Asteroid zerstört und der Schuss ist beendet. Trifft er nicht, läuft er bis zum Rand der Spielfläche.

Die Lösung sieht folgendermaßen aus:


Scratch asteroid laser.JPG


Der Asteroid

Beim Asteroiden ist folgendes Verhalten umzusetzen:

  • Der Asteroid soll jeweils an einer anderen Stelle und mit anderer Bewegungsrichtung auftauchen.
  • Nach einem Treffer soll kurz der zerstörte Asteroid sichtbar sein und ein "neuer" Asteroid taucht an anderer Stelle wieder auf.


Scratch asteroid asteroid.JPG


Das Raumschiff

Zuletzt programmieren wir noch das Raumschiff:

  • Wird das Raumschiff per Leertaste vorwärts bewegt, wird der Antriebsstrahl sichtbar.
  • Nach einer Kollision mit dem Asteroiden wird kurz das zerstörte Raumschiff sichtbar und es taucht ein "neues" Raumschiff auf der Position (0,0) auf.


Scratch asteroid raumschiff 1.JPGScratch asteroid raumschiff 2.JPG


Erweiterungsmöglichkeiten

  • Anzeige der Trefferzahl, Einbau eines Timers
  • zusätzliche Asteroiden
  • zusätzliches Raumschiff für einen weiteren Spieler
  • zusätzliche Gefahren durch Weltraummonster; feindliche Raumschiffe, die schießen etc.
  • Schwarze Löcher, die zur Flucht genutzt werden können

Mit Zielvorrichtung auf ein bewegtes Objekt schießen

Ein klassisches Spiel mit einer derartigen Funktionalität ist Moorhuhn.

Die Zielvorrichtung

Die Zielvorrichtung ist eine Art Zielscheibe, die dem Mauszeiger folgt. Wird die Maustaste gedrückt, nimmt die Zielscheibe ein verändertes Aussehen an und es wird ein entsprechendes Schussgeräusch abgespielt.

Für die Veränderung des Aussehens der Zielscheibe brauchen wir zwei Kostüme, die wir uns selber anfertigen.

Scratch moorhuhn 1.JPG

Für das Schussgeräusch laden wir uns aus dem Internet folgenden Audiosound auf unseren Computer. Anschließend importieren wir den Sound unter dem Reiter Klänge (Klang aus einer Datei laden) in Scratch. Mit dem Befehl nächstes Kostüm können wir zwischen den zwei Ansichten für die Zielvorrichtung wechseln.

Das Skript für das Schießen sieht dann relativ einfach aus:

Scratch moorhuhn 2.JPG


Das bewegte Zielobjekt

Das Zielobjekt bewegt sich in zweierlei Hinsicht. Zum einen bewegt es sich natürlich über die Zeichenfläche. Zum anderen ist das Objekt selbst animiert. Wir brauchen dazu einen besonderen Graphiktyp - ein sogenanntes animiertes GIF. Ein animiertes GIF besteht aus mehreren Frames, die, wenn sie kurz hintereinander angezeigt werden, für uns die Illusion der Bewegung erzeugen. Im Internet findet man relativ einfach solche animierte GIFs: Gibt man z.B. bei Google die Kombination animated gif bird ein, findet man jede Menge solcher Dateien. Mittels rechter Maustaste (Bild speichern unter) speichert man sie auf den eigenen Computer und kann sie verwenden. (Bitte bei Veröffentlichung des eigenen Spiels das Urheberrecht für die Graphiken respektieren!). Die Graphik wird nicht als Sprite eingefügt, sondern als Kostüm für einen Sprite, dessen eigentliches Kostüm man dann löscht. Beim Importieren erscheinen dann alle Frames der Graphik als eigenes Kostüm.

Scratch moorhuhn 3.JPG

Das Objekt erscheint an beliebiger Stelle auf der Spielfläche und bewegt sich dort fort und prallt jeweils auch wieder vom Rand ab. Nach jeder Teilbewegung, z.B. 10 Schritte, wechselt es in das nächste Kostüm. Ist es getroffen, gleitet es zu Boden und bleibt dort liegen. Dies wir gewährleistet durch den Befehl hinterlasse Abdruck. Wird das Spiel neu gestartet, werden die liegengebliebenen Objekte mittels wische Malspuren weg alle entfernt.


Das gesamte Skript für das Zielobjekt sieht nun folgendermaßen aus:

Scratch moorhuhn 4.JPG


Erweiterungsmöglichkeiten

  • Punktezählung und Timer
  • begrenzte Anzahl von Munition
  • mehrere Objekte gleichzeitig
  • Objekte fallen nicht zu Boden, sondern verschwinden und tauchen dann an anderer Stelle wieder auf
  • Objekte, die sich wehren können und zurückschießen
  • etc.


Ein sich bewegendes Objekt steuern

Klassische Spiele mit dieser Funktionalität sind Pacman oder Tetris. Wir wollen uns hier das Spiel Pacman näher ansehen.

Der Pacman

Das dynamische Aussehen lässt sich wieder relativ einfach durch den Wechsel von zwei Kostümen realisieren.

Scratch pacman 1.JPG

Als nächstes Element brauchen wir den Irrgarten, in dem sich Pacman bewegt und in dem die Pellets verteilt werden, die er auffrisst. Dabei ist zu beachten, dass dieser Irrgarten als eigener Sprite angelegt wird und nicht als Hintergrundbild.

Scratch pacman 2.JPG

Für das Verhalten des Pacman benötigen wir drei verschiedene Skripte:

Das Aussehen wir durch einen einfachen Kostümwechsel realisiert:

Scratch pacman 3.JPG

Das Skript für die Bewegung sorgt dafür, dass der Pacman zu Beginn auf eine Startposition gesetzt wird und in eine bestimmte Richtung sieht, in die er sich dann bewegt. In einer Endlosschleife bewegt er sich nun vorwärts und wird immer wieder auf seine Bahn zurückgesetzt, wenn er den Irrgarten berührt:

Scratch pacman 4.JPG

Den Code für die Steuerung kennen wir im Prinzip bereits von früheren Spielen. Doch nun steuern wir mit den Pfeiltasten nur die Bewegungsrichtung, da die eigentliche Bewegung bereits durch das obige Skript umgesetzt wird:

Scratch pacman 5.JPG


Die Pellets

Für die Pellets verwenden wir nur einfache Scheiben. Auch der Code ist relativ einfach. Bei Spielbeginn zeigen sich die Pellets. Werden sie von Pacman berührt, verschwinden sie und das entsprechende Skript wird angehalten. Es reicht, den Code für ein einziges Pellet zu erzeugen. Anschließend dupliziert man den entsprechenden Sprite in der gewünschten Anzahl und verteilt die Pellets im Irrgarten.

Scratch pacman 6.JPG


Die Gespenster

Im Irrgarten bewegen sich Gespenster, die Jagd auf Pacman machen. Diese Geister bewegen sich auf bestimmten Bahnen. Wird Pacman berührt, ist das Spiel aus.

Scratch pacman 7.JPG

Das fertige Spiel sieht dann folgendermaßen aus (Ausschnitt):

Scratch pacman 8.JPG


Erweiterungsmöglichkeiten

  • Punktezählung und Timer
  • Bonuspunkte in Form von Obst, das zufällig an bestimmten Stellen auftaucht.
  • Fluchtmöglichkeit für Pacman (evtl. verbunden mit Punktabzug)
  • zweiter Mitspieler
  • zweites Level, wenn alle Pellets verspeist sind


Jump 'n' Run

Als Jump ’n’ Run (von englisch jump and run ‚springen und laufen‘ bzw. ‚spring und lauf‘) bezeichnet man Computerspiele, bei denen sich die Spielfigur laufend und springend fortbewegt. Klassische Spiele mit dieser Funktionalität sind Donkey Kong oder Super Mario. Wir wollen uns einige Elemente von Donkey Kong näher ansehen.

Die Plattformen

Um die Prinzessin zu retten, muss der Held über Leitern auf immer höhere Plattformen klettern. Wir erstellen diese Plattformen als eigenen Sprite.

Scratch jumprun 1.JPG

Scratch jumprun 2.JPG

Scratch jumprun 3.JPG

Scratch jumprun 4.JPG

Scratch jumprun 5.JPG

Scratch jumprun 7.JPG

Scratch jumprun 6a.JPG

Scratch jumprun 8.JPG