Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:microbit_asteroids_game_2023 [2023-05-24 13:09] scatalit:microbit_asteroids_game_2023 [2024-05-06 09:07] (aktuell) – [Version 3] sca
Zeile 3: Zeile 3:
 ===== Programm 1M FS2023 Q2 ===== ===== Programm 1M FS2023 Q2 =====
  
-++++Programm| 
  
-=== Lektion 5: 24.05.2023 === 
- 
-   * Slides: Model / View 
-   * Auftrag: Version Final 
-   * **Abgabe 1:** Teil I & II (oder mehr) bis So 28.5. 
-   * **Abgabe 2:** Verbesserung & Teil III & IV bis So 4.6. 
- 
-=== Lektion 4: 10.05.2023 === 
- 
-   * Rückmeldung HA: 
-     * Erreichbarkeit: Mitteilungen meist per Teams, muss *täglich* überprüfen 
-     * wird besser 
-     * bitte mit aussagekräftiger Rückmeldung. Probleme oder Fehler? Beschreibe diese und nicht einfach "... dann wird mir eine Fehlermeldung bei Linie 30 angegeben." 
-     * GitHub: NIE Files per Upload hochladen sondern über Git-Bash. Finde heraus wie das geht, frage TALIT-Go(e)tti! 
- 
-   * OOP: 
-     * Grundidee 
-     * Beispiele von SuS 
-     * Live-Demo: Asteroiden-Regen 
- 
-   * HA: 
-     * v05 korrigieren & erweitern 
-     * beachte: Aufgabe wurde ergänzt: 
-       * z.B. Klasse für Player 
-     * **Abgabe 1:** bis kommenden Sonntag 14.5. (besser früher) 
-     * dann warten auf Rückmeldung von LP 
-     * **Abgabe 2:** Verbesserung (falls nötig bis So. 21.5. 
-     * **Ziel: perfekte OOP Version bis zur nächsten Lektion** 
- 
-**Code-Beispiele SuS:** 
- 
-Wo ist das Problem? 
-<code python> 
-class Asteroid: 
-    def __init__(self, pos_x, pos_y, brightness, speed, last_update): 
-        self.pos_x = pos_x 
-        self.pos_y = pos_y 
-        self.brightness = brightness 
-        self.speed = speed 
-        self.last_update = last_update 
- 
-    def spawn(self): 
-        if len(Asteroids) < MAX_ASTEROIDS: 
-            pos_x = random.randint(0, 4) 
-            pos_y = 0 
-            brightness = ASTEROID_BRIGHTNESS 
-            speed = random.randint(50, 500) 
-            last_update = time.ticks_ms() 
-            asteroid = Asteroid(pos_x, pos_y, brightness, speed, last_update) 
-            Asteroids.append(asteroid) 
-            return asteroid 
-        return None 
-</code> 
- 
-=== Lektion 3: 03.05.2023 === 
- 
-   * Rückmeldung HA: 
-     * In Code unten keine Werte (ausser z.B. 0), sondern KONSTANTEN 
-     * Keep it short & simple: 
-       * anstelle `if <condition1>: if <condition2>` einfach: `if <condition1> and <condition2>` 
-       * vermeide zu viele Einrückungen -> schwierig zu lesen 
-     * Logische Abfolge in Game-Loop: Halte dich an Vorgaben in Template: 
-       * Template: Update Asteroid & Player / Collision / Display / Short Sleep 
-       * Bsp. nicht optimal: Display / Update Asteroid & Player / Collision / Short sleep 
-     * Neustart bei Game Over: Mehrere Möglichkeiten: 
-       * Nach Game Over in neues `while True`, mit break ausbrechen (Lösung v04a). Problem: Wie auf Starteinstellungen zurücksetzen, ohne den Code copy-pasten? Möglichkeit: global variables, aber ist bad practice 
-       * Alternative: Zwei eigene Funktionen für Game Loop und Game Over (v04b). 
-   * Besprechung: Wollen mehrere Asteroiden gleichzeitig haben, sollen zufällig spawnen. Wie programmieren? 
-   * Theorie Input und Aufgaben (keine Zeit mehr für Aufgaben) zu [[talit:oop_einfuehrung#auftrag_2oop_im_game|OOP]] 
-   * Version 5 programmieren 
-   * **HA:** 
-     * v05 fertig und abgeben bis So. 
-     * optional aber sehr empfohlen: [[talit:oop_einfuehrung#auftrag_1klasse_person|Auftrag 1]] 
- 
- 
-=== Lektion 2: 26.04.2023 === 
- 
-   * **Rückmeldung Abgaben** von HA: 
-     * waren nicht gut im Allgemeinen, müssen immer gleich ablaufen 
-     * Lektion verpasst? SELBSTÄNDIG nacharbeiten, nachfragen, ... 
-     * z.T. HEX-File oder File ohne Endung anstelle PY-File hochgeladen. Python-Files immer von Form `my_file.py` 
-     * vor Abgabe **überprüfen**, ob Hochladen auf GitHub funktioniert hat! 
-     * z.T. (fast) identische Abgaben. Warum??? 
-     * **Nachricht** an LP per Teams mit folgender Info: 
-       * **Link** zum File (jedes Mal aufs Neue, damit LP nicht lange suchen muss) 
-       * **Rückmeldung:** Funktioniert? Falls nicht, beschreibe Probleme, Bugs, ... so genau es geht\\ \\ 
-   * **Rückmeldungen Code:** 
-     * [[talit:python_setup#programmier-konventionen| Programmierkonventionen]] 
-     * falls `game_over` bool (True oder False), schreibe `if game_over` anstelle `if game_over == True` 
-     * Kommentare: Überschriften, Erklärungen 
-     * Strukturierung Code (siehe Template zu nächster Code-Version) 
-     * Trenne Logik von Anzeige (mehr dazu im Auftrag zu v03) 
-     * Verwende **kein sleep()** für Bewegung der Asteroiden (beeinflusst auch Player) sondern `time.ticks_ms()`\\ \\ 
-   * **Auftrag Lektion:** 
-     * **Version 3** (gleiches Game aber sauber strukturiert) 
-     * Lösung muss mit **LP besprochen** werden 
-   * **HA 1:** Studiere [[talit:talit_info|TALIT-Info]] 
-   * **HA 2: Version 4** 
-     * Abgabe bis SA-Abend 
-     * Halte dich an Abgaberegeln (gelten immer!): 
-       * Nachricht an sca per Teams mit: 
-       * **Link** zum File (jedes Mal aufs Neue, damit LP nicht lange suchen muss) 
-       * **Rückmeldung:** Funktioniert? Falls nicht, beschreibe Probleme, Bugs, ... so genau es geht\\ \\ 
- 
- 
- 
-=== Lektion 1: 19.04.2023 === 
- 
-   * **Version 1** (Challenge, Asteroids v01) 
-   * Besprechung: Wie kann man verbessern? Siehe Tipps 
-   * Auftrag 2 beginnen 
-   * **Hausaufgabe:** 
-     * Bis Sonntagabend **Version 2** fertig ... 
-     * auf GitHub (geteilt mit anschae, gehe auf GitHub und stelle sicher, dass alles geklappt hat) ... 
-     * und Nachricht per Teams an sca mit: 
-       * Link zu GitHub Repo 
-       * kurze Nachricht: Was funktioniert? Gibt noch Probleme? 
- 
-++++ 
 ===== Version 1: Challenge ===== ===== Version 1: Challenge =====
  
Zeile 168: Zeile 48:
      * Speichere den Zeitpunkt zu dem der Asteroid zuletzt bewegt wurde in einer Variablen.      * Speichere den Zeitpunkt zu dem der Asteroid zuletzt bewegt wurde in einer Variablen.
      * Überprüfe in jedem Durchlauf, ob seit der letzten Bewegung genügend Zeit (z.B. 500ms) vergangen sind. Falls ja: Bewege Asteroid.      * Überprüfe in jedem Durchlauf, ob seit der letzten Bewegung genügend Zeit (z.B. 500ms) vergangen sind. Falls ja: Bewege Asteroid.
-     * kurzes Delay wie `sleep(20)` verhindert nervöses flackern+     * kurzes Delay wie `sleep(20)` verhindert nervöses Flackern
    * **Programmierstil:**    * **Programmierstil:**
      * Verwende sinnvolle, aussagekräftige Variablennamen, z.B. `asteroid_x` (für $x-$Koordinate von Asteroid) anstelle `a`.      * Verwende sinnvolle, aussagekräftige Variablennamen, z.B. `asteroid_x` (für $x-$Koordinate von Asteroid) anstelle `a`.
Zeile 196: Zeile 76:
  
 # CONSTANT # CONSTANT
-""" all constants: 'variables' that don't change, use capital letters only """+""" all constants: 'variables' that don't change, use CAPITAL letters only """
  
 # VARIABLES # VARIABLES
-""" variables that do change """+""" variables (that do change) that need to be declared before the while-loop """
  
 while True: while True:
Zeile 288: Zeile 168:
  
 ===== Version Final ===== ===== Version Final =====
 +
 +**Slides:** {{ :talit:microbit_model_view.pdf |Model vs. View}}
  
 Nun geht es in die finale Phase! Ziel ist, zuerst ein komplett abstraktes **Modell** des Games zu erstellen. Dieses soll dann genutzt werden, um verschiedene Versionen des Spiels zu erstellen: Nun geht es in die finale Phase! Ziel ist, zuerst ein komplett abstraktes **Modell** des Games zu erstellen. Dieses soll dann genutzt werden, um verschiedene Versionen des Spiels zu erstellen:
Zeile 327: Zeile 209:
     """     """
     if sys.platform == 'microbit':     if sys.platform == 'microbit':
-        return time.ticks_ms() +        try: 
-    return time.time()*1000+            return time.ticks_ms(
 +        except Exception as e: 
 +            print("An error occurred on microbit:", str(e)
 +    else: 
 +        try: 
 +            return time.time()*1000 
 +        except Exception as e: 
 +            print("An error occurred on Windows/Mac/Linux/... (not microbit):", str(e))
  
 class Player: class Player:
Zeile 381: Zeile 270:
 ++++ ++++
  
-=== Teil II: Mirco-Bit ===+=== Teil II: Micro-Bit ===
  
    1. Erstelle im Online-Editor ein neues File (heisst `main.py`).    1. Erstelle im Online-Editor ein neues File (heisst `main.py`).
  • talit/microbit_asteroids_game_2023.1684933771.txt.gz
  • Zuletzt geändert: 2023-05-24 13:09
  • von sca