Asteroids Game

Ziel:

  • Asteroiden Game in verschiedenen Versionen Programmieren …
  • … auf verschiedenen Plattformen.
  • Code optimal Modellieren
  • Model vs. View

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

Mache Kopie von Game und speichere unter Namen asteroids_v02.py. Verbessere nun dieses mithilfe der Tipps unten.

Tipps

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.

Template

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.

Ziel: beliebig viele, unabhängige Asteroiden

Mache eine Kopie von der letzten Version und nenne sie asteroids_v05.py.

  1. Plan: 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). Daher können sich Asteroiden auch überholen.
    Bespreche mit KollegIn: Wie kann man das technisch umsetzen? Welche programmiererischen Mittel kann man da verwenden? Vergleicht eure Antworten mit den Lösungen unten.

    Lösung

  2. Programmieren: Mache eine Kopie der letzten Version deines Codes und implementiere die neuen Features (siehe Lösungen von 1.).

Tipps

  • talit/asteroids_game.1716808992.txt.gz
  • Zuletzt geändert: 2024-05-27 11:23
  • von sca