Seite anzeigenÄltere VersionenLinks hierherCopy this pageFold/unfold allNach oben Diese Seite ist nicht editierbar. Du kannst den Quelltext sehen, jedoch nicht verändern. Kontaktiere den Administrator, wenn du glaubst, dass hier ein Fehler vorliegt. ====== TALIT Programmier-Projekt 2M ====== ===== Übersicht ===== * Eines von drei **offiziellen TALIT-Projekten** * Muss **Python-Programmierprojekt** sein * Empfehlung: mit PyGame (muss aber nicht) * **muss bestanden** werden, ansonsten ist TALIT-Reise vorbei * **Abgabe** * **Deadline:** letzter Schultag des aktuellen Semesters * **Wie:** Teams-Nachricht an Betreuer inkl. Link zum Repo ===== Ideen ===== * **Bekanntes Game** mit **eigenem Twist** (Tetris, Pac-Man, Flipper-Kasten, ...) * **Eigenes Game** entwickeln * **Lernprogramm** z.B. für: * Binärsystem (Binäruhr, Umrechnen Dez <-> Bin, Spielmodus, ...) * Kanti-Mathe (quad. Gleichungen, LGS, ...) * Kinder, z.B. Buchstaben spielerisch lernen * **Weiterentwicklung des MNIST-Neuronalen Netzwerks** * ... ===== Tipps ===== * Empfehlung: Verwende **PyGame**. PyGame ist Library, mit der man mit Python Programme mit einer graphischen Oberfläche programmieren kann. Besonders ist es geeignet, 2D-Retro Games damit zu entwickeln. Für 3D-Games und Games mit moderner Grafik ist es allerdings nicht geeignet. Man kann mit PyGame aber auch andere Programme als Games entwickeln. * Es gibt aber auch andere Python-Libraries, mit denen man **GUI**s erstellen kann wie PyQT, ... * Website, um eigene Pixelart zu erstellen (auch Animationen): [[http://piskelapp.com]] ===== Vorgehen ===== 1. **Part 1:** PyGame kennenlernen (-> muss nachher nicht verwendet werden, ist aber empfohlen) 1. Studiere die folgende Seite: [[talit:python_pygame]] 1. Führe das folgende **Tutorial** aus: [[talit:python_pygame#tutorial]] (PyGame installieren, Template herunterladen, verstehen, erweitern) 1. **Part 2:** Idee für Python-Programmierprojekt ausdenken, mit LP besprechen, absegnen lassen. 1. **Part 3:** 1. Idee ausarbeiten, 1. GitRepo mit passendem Namen erstellen, mit Betreuer teilen 1. Planungsartefakte erstellen als Markdown-Dokumente im Repository: 1. **Product Requirements Document** (PRD, mehr Infos unten) 1. **Design Document** (DD) 1. **Timeline** 1. Planung mit Betreuer besprechen (vor Ort oder per Teams) 1. **Part 4:** 1. Mit arbeiten beginnen 1. regelmässige commits (mind. 1 pro Woche) und pushes 1. Ab jetzt kann **zuhause gearbeitet werden** 1. Aus **eigenem Antrieb treffen mit LP abmachen, mind 1. pro Monat!** 1. Bei Fragen, Problemen in Lektion kommen ===== Projektplanung ===== Die Projektplanung besteht aus drei Dokumenten, die aufeinander abgestimmt sind und aufeinander verweisen können. ==== Product Requirements Document ==== Im _requirements engineering_ werden die aus _Kundensicht_ nötigen Merkmale (_features_) des Produkts ausgearbeitet und im **Product Requirements Document** (PRD, de _Lastenheft_) dokumentiert. Das PRD beantwortet die Frage, **Was & Warum** das Produkt gebaut wird. Es muss vom Auftraggeber (=Lehrperson & Schüler:in) freigegeben werden. * **Umfang**: 1-2 Seiten * **Format**: Markdown, Datei `prd.md` auf github. * **Inhalt** * **Abstract:** Zu oberst in 2-3 Sätzen das Allerwichtigste kurz zusammengefasst. * **Programmbeschrieb:** * Beschreibe dein Programm in etwas mehr Detail. * Welche Features, Modi usw. soll es haben? * **Skizze:** Skizze des Hauptbildschirms. Von Hand oder mit Wireframe-Tool, z.B.: * [[https://app.diagrams.net]]. Für Beispiele siehe: Neues Diagramm erstellen -> Drahtgittermodelle / Wireframe -> eines auswählen * [[https://wireframe.cc]] * [[http://pencil.evolus.vn]] (muss installiert werden) * [[https://github.com/JungleState/ksr_junglestate/blob/main/doc/requirements.md|Beispiel]] ==== Design Document ==== Das _Design Doc_ beschreibt, **wie** dass das Produkt gebaut wird. * **Umfang**: 1-2 Seiten * **Format**: Markdown, Datei `design.md` auf github. * **Inhalt** * **Technische Details:** * Wie soll das Projekt umgesetzt werden? * Welche Programmiersprachen, Frameworks usw. sollen verwendet werden? * Hat das Produkt eine Schnittstelle (Web-App, Konsolenprogramm, Programmbibliotheke)? * Was sind die wichtigsten Klassen des Programms (z.B. `Player`, `Enemy`, `Item`) * **Herausforderungen** * Was sind die grössten 2-3 Herausforderungen oder Stolpersteine? * Gibt es bereits Ideen, wie diese angegangen oder umschifft werden könnten? * [[https://github.com/JungleState/ksr_junglestate/blob/main/doc/visualization.md#technical-design|Beispiel]] ==== Timeline ==== Die _Timeline_ (Zeitplan) beschreibt, **wann** die verschiedenen Teile gebaut werden. * **Format**: Markdown, Datei `timeline.md` auf github. * **Inhalt** * Einteilung der ganzen Umsetzung in 3-4 Milestones (Meilensteine). * Verzichtsplanung: Welche Merkmale sind Must-have, welche Nice-to-have? * Planänderungen, Verzögerungen und Umwege * sind normal! * Die Timeline darf und muss entsprechend angepasst werden. * Das Abgabedatum bleibt hingegen fix -> Verzichtsplanung. ===== Kriterien und Anforderungen ===== * Das Projekt muss ein Programmierprojekt, in welchem ausschliesslich mit **Python** programmiert wird. Webprojekte z.B. mit Flask sind explizit *nicht* erlaubt (wird später in TALIT gemacht). * Die Projektidee muss mit der LP abgesprochen werden und muss dann so umgesetzt werden. Allfällige **Planabweichungen** müssen rechtzeitig beantragt und von der LP abgesegnet werden. * Es muss sauber **objektorientiert** programmiert sein. * Der **Programmierstil** muss demjenigen des **PyGame-Templates** oben entsprechen (verschiedenen Files, Aufbau der Klassen, ...). Arbeitet man mit PyGame, so ist es empfohlen, mit diesem Template zu starten und es entsprechend anzupassen. * **Ressourcen** wie Bilder, Musik, Videos sollen möglichst selbst erstellt werden. Falls solche aus dem Internet verwendet werden, so müssen diese lizenzfrei sein. * Der Code muss folgende **Kriterien** erfüllen * sauber strukturiert * passende Abstände im Code * sinnvolle Namen für Variablen, Methoden usw. * an [[python_setup#programmier-konventionen|Python Konventionen]] halten * sinnvoll kommentiert (so dass LP in kurzer Zeit Code verstehen kann) talit/projekte.txt Zuletzt geändert: 2026-08-10 07:22von hof