Calliope mini - Spaß durch Programmieren

Solo-Pong

Ziel: Der Ball aus der letzten Übung wird durch einen Schläger daran gehindert, den linken Rand zu erreichen. Es gilt, möglichst lange den Ball im Spiel zu halten.

Vorbereitung

Da das letzte Programm erweitert werden soll, öffnet man es und speichert es z.B. unter einem neuen Namen ab. Dann schiebt man alles aus der Dauerhaft-Schleife zur Seite. Der ganze Block wird jetzt grau dargestellt und vom Programm nicht mehr benutzt. Wenn der Schläger funktioniert, wird das Programm wieder zusammengefügt.

Der Schläger

Pong

Der Schläger ist einfach ein schmales Rechteck kurz vor dem linken Rand. Damit man bei der Gestaltung flexibel ist und z.B. während des Spiels den Schläger kleiner werden lassen kann, sind alle Größen in Variablen abgelegt.

Länge und Breite erklären sich selbst, s_links ist der Abstand vom linken Rand und s_y ist die Koordinate der linken oberen Ecke. Sie wird so aus der Länge berechnet, dass der Schläger zu Beginn immer in der Mitte platziert ist.

Pong

In der Dauerhaft-Schleife wird auf das Drücken der hoch-Taste reagiert:

  • nur, wenn der Schläger den oberen Rand nicht erreicht hat
  • der alte Schläger wird in weiß gezeichnet. Damit ist er nicht mehr zu sehen.
  • Die s_y-Koordinate wird um 2 kleiner (2 Pixel hoch)
  • der Schläger wird in blau neu gezeichnet.

Da der Computer dafür etwas braucht, muss keine Wartezeit eingebaut werden, damit der Schläger nicht sofort nach oben rauscht. Die Änderung der Koordinate s_y um 2 Pixel bewirkt, dass sich der Schläger in vertikaler Richtung schneller als der Ball bewegt.

Die Prozedur für die Bewegung nach unten lässt sich ebenfalls leicht programmieren.

Schiebt man jetzt den Programmteil für den Ball in die unendliche Schleife, hat man schon fast das Spiel fertig. Der Ball erkennt aber den Schläger noch nicht und fliegt einfach so durch.

Damit der Ball vom Schläger abprallt, muss die Entscheidung für die linke Seite erweitert werden. Der Ball wird reflektiert, wenn

  • der linke Rand des Balls (x-radius) auf der Höhe des Schläger ist (s_links+s_breite) und
  • der untere Rand des Balls (y+radius) größer ist als der obere Rand des Schlägers (s_y) und
  • der obere Rand des Balls (y-radius) kleiner ist als der untere Rand des Schlägers (s_y+laenge)
GameKit

Hat man alles richtig gemacht, läuft das Spiel in der Grundversion. Alles weitere kann darauf aufbauen.

Der rechte Schläger

Es wird ein Schläger auf der rechten Seite erzeugt, an dem später der Ball abprallen soll. Der Schläger wird mit den Hoch-Runter-Tasten bewegt.

Auf dem weißen Hintergrund erscheint am rechten Rand der Schläger als Sprite der Größe 4x40 Pixel. Damit der Schläger den Bildschirm nicht verlässt, sagt man ihm einfach, das er auf dem Display bleiben soll.

Da sich der Schläger nur nach oben und unten bewegen soll, wird die Geschwindigkeit vx mit 0 und die Geschwindigkeit vy mit 100 angegeben. Mehr ist nicht nötig. Alles andere wird automatisch realisiert. Einfacher geht das nicht.

schleager

Im nächsten Schritt wird der Ball aus der vorherigen Übung unter den Schläger in den Startblock eingefügt.

Damit fliegt der Ball im Spielfeld und der Schläger kann mit den Knöpfen bewegt werden. Aber der Ball reagiert auf der rechten Seite noch nicht auf den Schläger.

schleager
schleager

Das Verhalten des Balls an der rechten Seite wird im Block wenn Spielupdate programmiert. Der Block ersetzt den sonst üblichen Dauerhaft-Block. Spielupdate ist für die Spieleprogrammierung optimiert und wird immer dann aufgerufen, denn der Bildschirm neu gezeichnet wird. Das erfolgt etwa 60 mal in der Sekunden.

Im ersten Teil wird das Verhalten programmiert, wenn der Ball den Schläger berührt. Dann wird der vx-Wert verändert. Da der vx-Wert immer positiv ist, wenn der Schläger berührt wird, wird er durch den Befehl auf den negativen Wert der Geschwindigkeit gesetzt und fliegt demnach zurück.

Falls er den Schläger nicht berührt, also neben dem Schläger an der Wand landet, wird der Ball gelöscht, er verschwindet.

schleager

Bis zum ersten Spiel ist nun nicht mehr weit. Als erstes werden die Anzahl der Leben festgelegt. Das geht im Startblock über den Block Info, setze Anzahl Leben auf 5.

Danach wird der Teil verändert, der nach dem Schuss ins rechte Aus folgt:

  • die Ballzerstörung fällt weg
  • die x-Geschwindigkeit des Balls wird auf -60 gesetzt. Damit fliegt er immer zur linken Seite
  • der Ball wird wieder auf die Startposition gesetzt
  • die Anzahl der Leben wird um 1 erniedrigt

Mehr ist nicht zu tun. Die Leben werden automatisch gezählt und das Spiel endet, wenn alle Leben weg sind.

Es ist jetzt kein Problem, den Spielstand beim Start auf 0 zu setzen und bei jeder Kollision von Ball und Schläger ihn um eins zu erhöhen. Auch der Spielstand wird automatisch angezeigt.

zurück

Impressum/ Kontakt Datenschutzerklärung Creative Commons Lizenzvertrag