====== 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 vom aktuellen Semester * **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 * ... ===== 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. **Product Requirements Document** (PRD, mehr Infos unten) *in Repo* erstellen und Betreuer mitteilen (per Teams inkl. Link) 1. PRD 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 ===== Product Requirements Document (PRD) ===== * PRD ist kurzes Dokument (1-2 Seiten), welches alles zusammenfasst, was das Produkt (also das Resultat der Arbeit) sein soll. * 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:** Fertige Skizze an von Hauptbildschirm, wie etwa aussehen könnte. 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) * **Technische Details:** * Wie soll umgesetzt werden? * Welche Programmiersprachen, Frameworks usw. sollen verwendet werden? * Hat das Produkt eine Schnittstelle (Web-App, Konsolenprogramm, Programmbibliotheke)? * [[https://github.com/JungleState/ksr_junglestate/blob/main/doc/requirements.md|Beispiel]] NODISP 2 **BEM SCA: würde ergänzen:** * Grobe Timeline * Wo könnten Hauptprobleme sein? ===== 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 royalty free 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)