Pong in Scratch – Das deutschsprachige Scratch-Wiki (2024)

Bei einem simplen Pong-Spiel wird vom Spieler eine Platte gesteuert, die einen Ball auffangen muss, damit dieser nicht auf dem Boden landet. In diesem Tutorial erfährst du, wie du ein solches Spiel programmieren kannst.

Inhaltsverzeichnis

  • 1 Methode
  • 2 Grafiken
  • 3 Variablen
  • 4 Skripte
    • 4.1 Bühne
    • 4.2 Platte
    • 4.3 Ball

Methode

Nach der in diesem Tutorial verwendeten Methode wird die Platte mit der Maus gesteuert (die Höhe der Platte bleibt jedoch stets erhalten). Zu Beginn hat man drei Leben; landet der Ball auf dem Boden, verliert man eines. Für jeden Aufprall auf der Platte gibt es 5 Punkte; alle 100 Punkte erreicht man ein neues Level. Insgesamt gibt es 10 Level.

Grafiken

Wir benötigen für alle zehn Level ein Hintergrundbild, damit das Spiel nicht so langweilig aussieht. Auch muss an den Ball und an die Platte gedacht werden.

Variablen

Für das Spiel verwenden wir folgende Variablen:

  • Level (am Anfang 1)
  • Punkte (am Anfang 0)
  • Leben (am Anfang 3)

Skripte

Bühne

Wir haben im Projekt zwei Figuren (Ball und Platte) sowie die Bühne. Der Bühne fügen wir folgendes Skript hinzu:

Wenn @greenFlag angeklicktwechsle zu Bühnenbild [Level 1 v]setze [Level v] auf [1]setze [Punkte v] auf [0]setze [Leben v] auf [3]

Nun brauchen wir ein Skript, das definiert, dass alle 100 Punkte das nächste Level kommen soll und damit auch das nächste Bühnenbild. Theoretisch könnte man das so lösen:

warte bis <(Punkte)=[100]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 2 v]warte bis <(Punkte)=[200]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 3 v]warte bis <(Punkte)=[300]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 4 v]warte bis <(Punkte)=[400]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 5 v]warte bis <(Punkte)=[500]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 6 v]warte bis <(Punkte)=[600]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 7 v]warte bis <(Punkte)=[700]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 8 v]warte bis <(Punkte)=[800]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 9 v]warte bis <(Punkte)=[900]>ändere [Level v] um (1)wechsle zu Bühnenbild [Level 10 v]

Dieses Skript könnte man aber um einiges abkürzen, zum Beispiel so:

wiederhole fortlaufendwarte bis <((Punkte) mod (100))=[0]>//prüft, ob die Punktzahl durch 100 geteilt 0 ergibtändere [Level v] um (1)wechsle zu Bühnenbild [nächstes Bühnenbild v]//wechselt zum nächsten Bühnenbildende

Außerdem wird das Spiel wird gestoppt, wenn der Spieler keine Leben mehr hat oder schon alle Level durchgespielt hat.

Wenn @greenFlag angeklickt::greywechsle zu Bühnenbild [Level 1 v]::greysetze [Level v] auf [1]::greysetze [Punkte v] auf [0]::greysetze [Leben v] auf [3]::greywiederhole fortlaufend::greywarte bis <((Punkte::grey) mod (100)::grey)=[0]::grey>::greyändere [Level v] um (1)::greywechsle zu Bühnenbild [nächstes Bühnenbild v]::greyfalls <<(Punkte)=[1000]> oder <(Leben)=[0]>> dannstoppe [alles v]endeende

Super, die Skripte des Bühnenbilds wären damit auch schon fertig!

Platte

Nun kommen wir zu den Skripten der Platte. Hier brauchen wir auch nicht viele Blöcke, denn die Platte hat ja nicht viele Aufgaben.

Wenn @greenFlag angeklicktsetze y auf (-150)//positioniert die Platte nach untenwiederhole fortlaufendsetze x auf (Maus x-Position)//lässt die Platte nach links und rechts dem Mauszeiger folgenende

Ball

Okay, jetzt wird es ein bisschen komplizierter, denn wir kommen nun zu dem Ball. Zuerst bestimmen wir die Anfangsposition des Balls. Auch muss eine (Zufalls-)Richtung bestimmt werden, in die der Ball "geschossen" wird.

Wenn @greenFlag angeklicktgehe zu x: (0) y: (150)setze Richtung auf (Zufallszahl von (-45) bis (45))

Dann muss der Ball ja auch immer von der Platte abprallen und sich neue Punkte holen, also:

wiederhole fortlaufendfalls <wird [Platte v] berührt?>pralle vom Rand abändere [Punkte v] um (5)drehe dich @turnRight um (Zufallszahl von (160) bis (200)) Gradende

Und natürlich muss sich der Ball ja auch ständig bewegen.

Wenn @greenFlag angeklickt::greywiederhole fortlaufend::greygehe (((Level)*(2.5))+(5))er-Schritt//die Geschwindigkeit des Balls ist vom Level abhängigfalls <wird [Platte v] berührt?::grey> dann::greypralle vom Rand ab::greyändere [Punkte v] um (5)::greydrehe dich @turnRight um (Zufallszahl von (160) bis (200)::grey) Grad::greyende

Es muss ebenfalls daran gedacht werden, dass der Ball den Boden ja nicht berühren darf (sonst wird ein Leben abgezogen).

Wenn @greenFlag angeklickt::greygehe zu x: (0) y: (150)::greysetze Richtung auf (Zufallszahl von (-45) bis (45)::grey)::greywiederhole fortlaufend::greygehe (((Level::grey)*(2.5)::grey)+(5)::grey)er-Schritt::greyfalls <wird [Platte v] berührt?::grey> dann::greypralle vom Rand ab::greyändere [Punkte v] um (5)::greydrehe dich @turnRight um (Zufallszahl von (160) bis (200)::grey) Grad::greyendefalls <(y-Position)<[-150]> dann//prüft, ob die y-Position des Balls geringer ist als die der Platteändere [Leben v] um (-1)gehe zu x: (0) y: (150)setze Richtung auf (Zufallszahl von (-45) bis (45))ende

Cool, damit hast du die Basis deines Pong-Spiels programmiert! Füge nun Elemente deiner Auswahl hinzu, die das Spiel noch interessanter machen.

Code zum Einbinden ins Forum:
[wiki=de:Pong in Scratch]Pong in Scratch[/wiki]

Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.

Pong in Scratch – Das deutschsprachige Scratch-Wiki (2024)
Top Articles
Latest Posts
Article information

Author: Jonah Leffler

Last Updated:

Views: 6392

Rating: 4.4 / 5 (45 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Jonah Leffler

Birthday: 1997-10-27

Address: 8987 Kieth Ports, Luettgenland, CT 54657-9808

Phone: +2611128251586

Job: Mining Supervisor

Hobby: Worldbuilding, Electronics, Amateur radio, Skiing, Cycling, Jogging, Taxidermy

Introduction: My name is Jonah Leffler, I am a determined, faithful, outstanding, inexpensive, cheerful, determined, smiling person who loves writing and wants to share my knowledge and understanding with you.