Aus Das deutschsprachige Scratch-Wiki
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 die grüne flagge 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) Sekunden ä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 end 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 end 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 end 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 die grüne flagge angeklickt//Skript für Tor 1 gehe zu x: (-215) y: (0) Wenn die grüne flagge 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 die grüne flagge 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) Grad//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) Grad//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) Grad//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) Grad//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 die grüne flagge angeklickt gehe zu x: (50) y: (0) wiederhole fortlaufend falls <Taste [w v] gedrückt?>, dann setze Richtung auf (0 v) gehe (5)er Schritt ende falls <Taste [s v] gedrückt?>, dann setze Richtung auf (180 v) Grad gehe (5)er Schritt ende falls <Taste [a v] gedrückt?>, dann setze Richtung auf (-90 v) Grad gehe (5)er Schritt ende falls <Taste [d v] gedrückt?>, dann setze Richtung auf (90 v) Grad gehe (5)er Schritt ende falls <wird [Fußball v] berührt?>, dann 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 die grüne flagge 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]) Grad wiederhole (10) mal gehe (5)er Schritt ende Wenn ich [Schuss (Spieler 2) v] empfange setze Richtung auf ([Richtung v] von [Spieler 2 v]) Grad 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...
[wiki=de:Fußball in Scratch]Fußball in Scratch[/wiki]