Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:microbit_asteroids_game_2023 [2023-05-25 07:16] – [Version Final] sca | talit: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 6: 31.05.2023 === | ||
- | |||
- | === Lektion 5: 24.05.2023 === | ||
- | |||
- | * Slides: Model / View | ||
- | * Auftrag: Version Final | ||
- | * **Abgabe 1:** Teil I & II (oder mehr) bis nächste Lektion, Besprechung in Person. | ||
- | * **Abgabe 2:** Verbesserung & Teil III & IV bis So 4.6. | ||
- | |||
- | === Lektion 4: 10.05.2023 === | ||
- | |||
- | * Rückmeldung HA: | ||
- | * Erreichbarkeit: | ||
- | * 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, | ||
- | 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, | ||
- | pos_y = 0 | ||
- | brightness = ASTEROID_BRIGHTNESS | ||
- | speed = random.randint(50, | ||
- | last_update = time.ticks_ms() | ||
- | asteroid = Asteroid(pos_x, | ||
- | Asteroids.append(asteroid) | ||
- | return asteroid | ||
- | return None | ||
- | </ | ||
- | |||
- | === 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 < | ||
- | * 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, | ||
- | * Alternative: | ||
- | * Besprechung: | ||
- | * Theorie Input und Aufgaben (keine Zeit mehr für Aufgaben) zu [[talit: | ||
- | * Version 5 programmieren | ||
- | * **HA:** | ||
- | * v05 fertig und abgeben bis So. | ||
- | * optional aber sehr empfohlen: [[talit: | ||
- | |||
- | |||
- | === Lektion 2: 26.04.2023 === | ||
- | |||
- | * **Rückmeldung Abgaben** von HA: | ||
- | * waren nicht gut im Allgemeinen, | ||
- | * Lektion verpasst? SELBSTÄNDIG nacharbeiten, | ||
- | * z.T. HEX-File oder File ohne Endung anstelle PY-File hochgeladen. Python-Files immer von Form `my_file.py` | ||
- | * vor Abgabe **überprüfen**, | ||
- | * 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: | ||
- | * **Rückmeldungen Code:** | ||
- | * [[talit: | ||
- | * falls `game_over` bool (True oder False), schreibe `if game_over` anstelle `if game_over == True` | ||
- | * Kommentare: Überschriften, | ||
- | * 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: | ||
- | * **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: | ||
- | |||
- | |||
- | |||
- | === Lektion 1: 19.04.2023 === | ||
- | |||
- | * **Version 1** (Challenge, Asteroids v01) | ||
- | * Besprechung: | ||
- | * 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? | ||
- | |||
- | ++++ | ||
===== Version 1: Challenge ===== | ===== Version 1: Challenge ===== | ||
Zeile 170: | 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 | + | * kurzes Delay wie `sleep(20)` verhindert nervöses |
* **Programmierstil: | * **Programmierstil: | ||
* Verwende sinnvolle, aussagekräftige Variablennamen, | * Verwende sinnvolle, aussagekräftige Variablennamen, | ||
Zeile 198: | Zeile 76: | ||
# CONSTANT | # CONSTANT | ||
- | """ | + | """ |
# VARIABLES | # VARIABLES | ||
- | """ | + | """ |
while True: | while True: | ||
Zeile 331: | Zeile 209: | ||
""" | """ | ||
if sys.platform == ' | if sys.platform == ' | ||
- | return time.ticks_ms() | + | |
- | return time.time()*1000 | + | |
+ | except Exception as e: | ||
+ | print(" | ||
+ | | ||
+ | try: | ||
+ | | ||
+ | except Exception as e: | ||
+ | print(" | ||
class Player: | class Player: | ||
Zeile 385: | 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`). |