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.