**Dies ist eine alte Version des Dokuments!**
Asteroids Game
Ziel:
- Asteroiden Game in verschiedenen Versionen Programmieren …
- … auf verschiedenen Plattformen.
- Code optimal Modellieren
- Model vs. View
Version 1: Challenge
Programmiere das Game Asteroids in einer einfachen Version in 45 Minuten: zu
- Spieler:in steuert Player (heller Pixel in unterster Reihe) mit Knöpfen
- Jeweils ein Asteroid (etw. weniger heller Pixel) fliegt von oben nach unten
- Player muss Asteroid ausweichen. Kollidiert dieser, ist Game Over!
- Erreicht Asteroid unteres Ende, wir ein neuer Asteroid in oberster Reihe an zufälliger $x-$Position erzeugt
- Speichere regelmässig!
- Hauptziele:
- Das Spiel muss funktionieren (auch wenn es noch nicht perfekt ist)
- Du hast es ganz alleine programmiert (siehe Spielregeln unten)
Spielregeln:
- Erlaubt:
- Internet-Suche zu allg. Fragen bzgl. Programmierung & Micro:bit
- Lehrperson fragen zu allg. Fragen
- nicht erlaubt:
- Austausch mit echten und künstlichen Intelligenzen (also kein ChatGPT, Ausnahme: Lehrperson)
- Internet-Suche zu Spiel-spezifischen Fragen (z.B. auf diesem Wiki)
Nach Challenge:
- Erstelle neues Repo auf GitHub mit Name
asteroids_game
. - Gebe der LP (anschae) frei
- Füge dein Game mit Name
asteroids_v01.py
hinzu: add / commit / push
Version 2
Mache Kopie von Game und speichere unter Namen asteroids_v02.py
. Verbessere nun dieses mithilfe der Tipps unten.
Version 3
Ziel: Code sauber strukturieren.
Mache Kopie von der letzten Version des Games und speichere es unter dem Namen asteroids_v03.py
. Verbessere das Game nun dieses mithilfe der Tipps unten. Falls du unzufrieden mit deine alten Version bist, kannst du auch mit einem leeren File beginnen und alles neu programmieren.
- Code sauber strukturieren wie in Template unten
- Kommentare hinzufügen: für Überschriften (wie in Vorgabe) und Erklärungen (nicht zu viel, nicht zu wenig) auf Englisch (höherer Lässigkeitsfaktor, ähm coolness factor!)
- Alle Wert, die sich nicht verändern (quasi die Game-Settings) werden in KONSTANTEN am Anfang des Spiels gespeichert.
Version 4
Ziel: Weitere Features implementieren.
Mache eine Kopie von der letzten Version v03 und nenne sie asteroids_v04.py
. WICHTIG: Bespreche deine Lösung von v03 mit der Lehrperson, bevor du weiter arbeitest.
Implementiere nun folgende Features:
- Game wird schneller mit der Zeit. Probiere verschiedene Einstellungen aus, Stichwort: Game-Balancing
- Game Over:
- zeigt z.B. SAD oder ANGRY-Smiley an
- zeigt Score an: definiere dazu eine Art Levels (z.B. für jede weiteren 10s, die man überlebt, steigt Level um 1
- kann dann Taste drücken, um Game neu zu starten
- Tipp: Mache zuerst einen Plan dazu, wie du das umsetzen kannst. Beginne erst nachher mit Programmieren.
Version 5
Ziel: beliebig viele, unabhängige Asteroiden
Mache eine Kopie von der letzten Version und nenne sie asteroids_v05.py
.
Das Ziel ist, dass wir beliebig viele Asteroiden haben können. Diese werden zufälligerweise gespawned. Es kann also sein, dass wir einmal $0$ und später $7$ Asteroiden haben. Jeder Asteroid ist unabhängig und bewegt sich in seinem eigenen Tempo (per Zufall bestimmen, wenn Asteroid erzeugt wird). Es können sich daher Asteroiden auch überholen.
Implementiere dann folgende Features:
- Asteroiden:
- Mehrere Asteroiden gleichzeitig
- Speichere Asteroiden in einer Liste
asteroids = [...]
- Jeder einzelne Asteroid ist ein Dictionary, welches alle relevanten Informationen des Asteroiden speichert. Welche sind das?
- Asteroiden werden zufällig erzeugt
- jeder Asteroid bewegt sich unabhängig (unterschiedliche Geschwindigkeiten, also auch Positions-Update zu unterschiedlichen Zeiten)
- Asteroiden sind komplett unabhängig voneinander. Verschwindet einer unten aus Bild, so ist er weg und spawned nicht gleich wieder am oberen Rand. Asteroiden können sich auch überholen.
- Player:
- Player auch mit Dictionary