Wir nutzen Cookies, um das allgemeine Benutzerelebnis zu verbessern. Mit der Nutzung unseres Wikis stimmst du der Nutzung von Cookies zu.

Fußball in Scratch

In diesem Tutorial wird erklärt, wie man in Scratch ein Fußball-Spiel im Multiplayer-Modus programmieren kann.

Methode

Nach diesem Tutorial werden die zwei Spielfiguren mit den Pfeiltasten (für Spieler 1) bzw. den Tasten W, A, S und D (für Spieler 2) gesteuert. Spieler 1 muss ins rechte Tor schießen, Spieler 2 ins linke. Wird der Fußball berührt, rollt der Ball in die entgegengesetzte Richtung, aus der der Schuss kommt. Der Ball erkennt, wenn er ein Tor berührt und ändert die Punktzahl des entsprechenden Spielers. Das Spiel dauert 90 Sekunden, danach wird ausgewertet, welcher Spieler die Spielrunde gewonnen hat.

Figuren

In diesem Beispiel werden folgende Figuren verwendet:

  • Spieler 1 (Steuerung durch Pfeiltasten)
  • Spieler 2 (Steuerung durch WASD)
  • Fußball (wird von den Spielern geschossen)
  • Tor 1 (Schussziel von Spieler 2)
  • Tor 2 (Schussziel von Spieler 1)

Außerdem wird auch die Bühne benutzt.

Variablen

Es werden folgende Variablen erstellt und in den Skripten verwendet:

  • Punkte von Spieler 1 (gibt an, wie viele Tore ins Tor 2 geschossen wurden)
  • Punkte von Spieler 2 (gibt an, wie viele Tore ins Tor 1 geschossen wurden)
  • Zeit (gibt an, in wie vielen Sekunden die Spielrunde endet)

Skripte

Bühne

Die Variable Zeit, die wir erstellt haben, muss uns immer mitteilen, wie lange die aktuelle Spielrunde noch dauert. Zu Beginn wird sie auf 90 gesetzt. Der Variablenwert richtet sich hier an die Einheit Sekunden.

Wenn @greenFlag angeklickt
setze [Punkte von Spieler 1 v] auf [0]//Anfangspunktzahl von Spieler 1 wird auf 0 gesetzt
setze [Punkte von Spieler 2 v] auf [0]//Anfangspunktzahl von Spieler 2 wird auf 0 gesetzt
setze [Zeit v] auf [90]
wiederhole bis <(Zeit)=[0]>
warte (1) Sek.
ändere [Zeit v] um (-1)//verringert den Variablenwert um 1
ende
falls <(Punkte von Spieler 1)>(Punkte von Spieler 2)> dann//Spieler 1 hat mehr Punkte als Spieler 2
frage [Spieler 1 hat gewonnen!] und warte
ende
falls <(Punkte von Spieler 1)<(Punkte von Spieler 2)> dann//Spieler 2 hat mehr Punkte als Spieler 1
frage [Spieler 2 hat gewonnen!] und warte
ende
falls <(Punkte von Spieler 1)=(Punkte von Spieler 2)> dann//Spieler 1 und Spieler 2 haben gleich viele Punkte
frage [Spieler 1 und Spieler 2 haben gewonnen!] und warte
ende
stoppe [alles v]

Tor 1 und Tor 2

Das Tor 1 (linkes Tor) wird in der Mitte des linken Bühnenrandes positioniert, das Tor 2 (rechtes Tor) rechts.

Wenn @greenFlag angeklickt//Skript für Tor 1
gehe zu x: (-215) y: (0)

Wenn @greenFlag angeklickt//Skript für Tor 2
gehe zu x: (215) y: (0)

Spieler 1

Nun kommen wir zu den Figuren Spieler 1 und Spieler 2. Fangen wir mit Spieler 1 an, welcher mit den Pfeiltasten gesteuert wird und ins rechte Tor (Tor 2) schießen muss.

Wenn @greenFlag angeklickt
gehe zu x: (-50) y: (0)//legt die Startposition von Spieler 1 fest
wiederhole fortlaufend
falls <Taste [Pfeil nach oben v] gedrückt?> dann
setze Richtung auf (0 v)//die Richtung wird auf oben gesetzt
gehe (5)er-Schritt
ende
falls <Taste [Pfeil nach unten v] gedrückt?> dann
setze Richtung auf (180 v)//die Richtung wird auf unten gesetzt
gehe (5)er-Schritt
ende
falls <Taste [Pfeil nach links v] gedrückt?> dann
setze Richtung auf (-90 v)//die Richtung wird auf links gesetzt
gehe (5)er-Schritt
ende
falls <Taste [Pfeil nach rechts v] gedrückt?> dann
setze Richtung auf (90 v)//die Richtung wird auf rechts gesetzt
gehe (5)er-Schritt
ende
falls <wird [Fußball v] berührt?> dann
sende [Schuss (Spieler 1) v] an alle//Nachricht wird u. a. an den Fußball gesendet

Die Nachricht Schuss (Spieler 1) wird an alle Figuren und die Bühne gesendet, darunter auch unser Fußball. Erhält der Ball diese Nachricht, rollt er etwas weiter weg (das muss aber noch programmiert werden).

Spieler 2

Auch Spieler 2 muss programmiert werden. Das Skript ist fast das gleiche wie das von Spieler 1, jedoch mit ein paar Unterschieden.

Wenn @greenFlag angeklickt::grey
gehe zu x: (50) y: (0)
wiederhole fortlaufend::grey
falls <Taste [w v] gedrückt?> dann::grey
setze Richtung auf (0 v)::grey
gehe (5)er-Schritt::grey
ende
falls <Taste [s v] gedrückt?> dann::grey
setze Richtung auf (180 v)::grey
gehe (5)er-Schritt::grey
ende
falls <Taste [a v] gedrückt?> dann::grey
setze Richtung auf (-90 v)::grey
gehe (5)er-Schritt::grey
ende
falls <Taste [d v] gedrückt?> dann::grey
setze Richtung auf (90 v)::grey
gehe (5)er-Schritt::grey
ende
falls <wird [Fußball v] berührt?::grey> dann::grey
sende [Schuss (Spieler 2) v] an alle
ende
ende

Auch die Nachricht Schuss (Spieler 2) wird u. a. an den Fußball gesendet. Auch hier rollt der Ball etwas weiter weg, jedoch weiß der Ball, dass der Schuss von Spieler 2 und nicht von Spieler 1 erfolgte.

Fußball

Wenn der Fußball ein Tor berührt, bekommt ein Spieler einen Punkt; welcher, hängt davon ab, um welches Tor es sich handelt.

Wenn @greenFlag angeklickt
gehe zu x: (0) y: (0)//geht in die Mitte der Bühne
wiederhole fortlaufend
falls <wird [Tor 1 v] berührt?> dann
ändere [Punkte von Spieler 2 v] um (1)//Spieler 2 bekommt einen Punkt
gehe zu x: (0) y: (0)//geht wieder zurück in die Mitte der Bühne
ende
falls <wird [Tor 2 v] berührt?> dann
ändere [Punkte von Spieler 1 v] um (1)//Spieler 1 bekommt einen Punkt
gehe zu x: (0) y: (0)//geht wieder zurück in die Mitte der Bühne
ende

Außerdem werden auch folgende Skripte hinzugefügt:

Wenn ich [Schuss (Spieler 1) v] empfange
setze Richtung auf ([Richtung v] von [Spieler 1 v])
wiederhole (10) mal
gehe (5)er-Schritt
ende

Wenn ich [Schuss (Spieler 2) v] empfange
setze Richtung auf ([Richtung v] von [Spieler 2 v])
wiederhole (10) mal
gehe (5)er-Schritt
ende

Super, damit hätten wir die Basis eines Fußballspiels programmiert! Gratulation!

Ergebnis

Fußball in Scratch

Schau' dir dieses Projekt auf der Scratch-Webseite an...




Code zum Einbinden ins Forum:
[wiki=de:Fußball in Scratch]Fußball in Scratch[/wiki]