Lernziele

Wir vertiefen unsere Programmierkenntnisse bei einem grösseren Projekt. Dabei erlernen wir Grundzüge der Softwareentwicklung kennen

# Softwareentwicklung

Bei der Softwareentwicklung wird nicht einfach drauflosprogrammiert. Oft macht das eigentliche «Coden» nur einen geringen Teil der Arbeit aus. Diese wird häufig in die folgenden vier Teile unterteilt:

Spezifikation
Was soll unser Programm/Spiel können?
Design
Wie können wir das umsetzen?
Realisierung
Die Umsetzung in der Programmiersprache – das «Coden»
Testdurchführung
Testen und ausprobieren

Im gesamten Prozess geht man auch immer wieder zurück: Wenn man z.B. bei der Realisierung merkt, dass etwas nicht so umsetzbar ist wie im Design festgelegt, so muss man nochmals das Design anpassen. Genauso kann es beim Testen vorkommen, das etwas nicht wie gewünscht funktioniert. Also müssen in der Realisierung, oder sogar im Design Anpassungen vorgenommen werden.

# Spielideen

Es folgen einige umsetzbare Spielideen mit Tipps zum Design als Vorschlag für das Projekt. Es sind auch weitere Spiele denkbar. Diese sollten jedoch mit der Lehrkraft abgesprochen werden, um sicherzustellen, dass sie auch umgesetzt werden können.

# Pong

Der Spieleklassiker aus zwei Schlägern und einem Ball. Die Schläger lassen sich mit der Tastatur steuern. Der Ball bewegt sich von selbst und prallt an den Schlägern und den Rändern oben und unten ab. Wenn er den linken oder rechten Rand erreicht gibt’s Punkte für den Spieler auf der anderen Seite.

https://de.wikipedia.org/wiki/Pong (opens new window)

mögliche Grafiken

Tipp

Elemente:

  • 2 Schläger:
    • Actor
    • können vom Spieler in vertikaler Richtung verschoben werden
    • horizontal sind die Positionen fix
  • Ball:
    • Actor mit Geschwindigkeits-Komponenten vx und vy
    • prallt oben und unten am Rand ab (vy = -vy)
    • prallt am Schläger ab (vx = -vx)
    • wenn rechter oder linker Rand berührt, Punkt für linken resp. rechten Spieler

Erweiterungen:

  • Anfangsrichtung des Balls zufällig
  • Punkte zählen
  • Abprallen an Schläger variieren, je nachdem ob in der Mitte oder am Rand

# Asteroids

Der Spieler steuert ein Raumschiff und muss dabei Asteroiden ausweichen. Als Erweiterung können Asteroiden beschossen werden. Sie zerfallen dabei in mehrere kleine Asteroiden.

https://de.wikipedia.org/wiki/Asteroids (opens new window)

mögliche Grafiken

Tipp

Elemente:

  • Raumschiff
    • Actor
    • hat Winkel und Geschwindigkeit
    • Bewegung (Verschiebung x- und y-Richtung) mit Sinus und Cosinus berechnen
    • kann vom Spieler gedreht, beschleunigt und gebremst werden
  • Asteroiden:
    • Actors
    • entstehen zufällig ausserhalb des Spiels
    • Bewegen sich ins Spielfeld hinein

Ausbaustufen:

  • Kollision zwischen Raumschiff und Asteroiden
  • Raumschiff kann schiessen
  • Asteroiden zerfallen bei Treffer in kleinere Asteroiden

# Snake

Der Spieler kontrolliert eine Schlange und sammelt Gegenstände. Dabei wird die Schlange immer länger. Fährt man in ein Hindernis oder in sich selbst, verliert man.

https://de.wikipedia.org/wiki/Snake_(Computerspiel) (opens new window)

mögliche Grafiken

Tipp

Die Schlange als Liste von Actors:

  • bei jedem Schritt einen neuen Actor (Schlangenkopf) vorne anhängen
  • der Actor wird gar nie bewegt, die Bewegung entsteht durch Hinzufügen eines neuen Elements reps. Entfernen des hintersten Elements
  • Kopf braucht Geschwindigkeit in x- und y-Richtung
  • mit den Steuerungstasten ändern diese Geschwindigkeiten

Spielschritt, also neuer Kopf nicht in Update, sondern mit clock.schedule_interval z.B. alle Zehntel-Sekunde.

Erweiterungen:

  • Items erscheinen zufällig und lassen sich einsammeln
  • Hindernisse erscheinen zufällig und dürfen nicht berührt werden
  • eigene Schlange darf nicht berührt werden
  • Schlange wächst (mit der Zeit oder dank Einsammeln)

# Tron

Variante von Snake: Zwei Spieler bewegen ihre Figur über die Bühne, die Figur hinterlässt einen Strich. Wenn man in den gegnerischen (oder den eigenen) Strich reinfährt hat man verloren.

https://de.wikipedia.org/wiki/Tron_(Computerspiel) (opens new window)

mögliche Grafiken

Tipp

Das Gefährt hinterlässt eine Spur:

  • man könnte z.B. den Bildschirm einfach nicht löschen im update-Unterprogramm
  • oder man setzt die Spur aus einer Liste von Actor zusammen (analog zu snake)
  • oder man zeichnet die Pixel der Spur auf ein surface – dazu braucht man aber einige Befehlt von pygame (ohne zero)

In allen Fällen kann man sich die durchgefahrenen Positionen in einer Liste von Koordinaten merken. So kann eine Kollision einfacher entdeckt werden.

Erweiterungen:

  • zweiter Spieler
  • Punkte zählen

# Aufgaben

Aufgabe «Spiel auswählen»

Schaue dir die 4 vorgeschlagenen Spielideen an. Kennst du sie bereits? Wähle ein Spiel aus das du programmieren möchtest.

Aufgabe «Spezifikationen»

Notiere stichwortartig was das Spiel können soll. Erstelle ev. Skizzen. Achte darauf, dass du ein simples Minimalprodukt formulierst, und nicht ganz so wichtige Dinge als Zusätze notierst. (Das Spiel sollte spielbar sein. Wenn aber keine Punkte gezählt werden, ist das nicht so schlimm.)

Aufgabe «Design»

Lies deine Spezifikationen durch und überlege dir, wie du das Umsetzen kannst:

  • Welche Actor brauchst du?
  • Welche Bilder müssen verwendet werden? (einen Startsatz an Bildern ist auf Teams verfügbar)
  • Wie kann die Figur gesteuert werden?
  • Welche Eigenschaften hat die Figur? (Geschwindigkeit, Richtung, Punkte, Leben, …)
  • Wie bewegt sich die Figur?

Mache wiederum einige Notizen zu deinem Vorhaben. Ev. helfen grafische Darstellungen!

Aufgabe «Realisierung»

Programmiere einen ersten kleinen Teil deines Spiels. Beginne z.B. mit der Hauptfigur und deren Steuerung. Füge weitere Figuren und den Hintergrund hinzu. Erstelle Kollisionsabfragen und zähle Punkte, usw.

Aufgabe «Testdurchführung»

Lasse deine Kolleg*innen ans Steuer und lass dir Rückmeldungen zu deinem Spiel geben!

Letzte Änderung: 25. Februar 2021 08:21