Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| ef_informatik:projekt_consolegames [2023-11-28 00:10] – [Hauptauftrag: Eigenes Game programmieren] sca | ef_informatik:projekt_consolegames [2024-01-02 09:39] (aktuell) – [Bewertung] sca | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Projekt: ConsoleGames ====== | ====== Projekt: ConsoleGames ====== | ||
| + | |||
| + | <color red> | ||
| + | |||
| + | * <color red> | ||
| + | * <color red> | ||
| **Ziele:** | **Ziele:** | ||
| Zeile 22: | Zeile 27: | ||
| ===== Slides ===== | ===== Slides ===== | ||
| - | {{ : | + | {{ : |
| {{ : | {{ : | ||
| + | |||
| + | {{ : | ||
| ===== Framework ===== | ===== Framework ===== | ||
| Zeile 98: | Zeile 105: | ||
| 1. Repo den Lehrpersonen **freigeben**. | 1. Repo den Lehrpersonen **freigeben**. | ||
| 1. Aktuelle Version von Framework herunterladen, | 1. Aktuelle Version von Framework herunterladen, | ||
| - | 1. Beginnen | + | 1. Beginnen |
| + | 1. **Tipp:** Zuerst Planen, Modellieren & Skizzieren, erst dann Programmieren! | ||
| 1. Regelmässige und unaufgeforderte **Commits & Pushes** von allen Gruppenmitgliedern, | 1. Regelmässige und unaufgeforderte **Commits & Pushes** von allen Gruppenmitgliedern, | ||
| 1. **Pünktliche Abgabe:** Sende Game-Klasse(n) (NICHT das gesamte VS Projekt) per Teams-Chat an sca. | 1. **Pünktliche Abgabe:** Sende Game-Klasse(n) (NICHT das gesamte VS Projekt) per Teams-Chat an sca. | ||
| - | 1. **Verspätete Abgabe:** | + | 1. **Verspätete Abgabe:** 1 Note pro angebrochene 24h Verspätung |
| - | | + | |
| Zeile 111: | Zeile 118: | ||
| **Gibt es Probleme in der Gruppe, meldet dies rechtzeitig, | **Gibt es Probleme in der Gruppe, meldet dies rechtzeitig, | ||
| - | ^ Kriterium ^ ^ | + | ^ Kriterium ^ Punkte |
| - | | Plug n' Play: Game kann ohne Probleme in Framework integriert werden | | | + | |**Spielidee, Originalität, |
| - | |Spielidee, Originalität, | + | |**Prozess, Vorgehensweise, |
| - | |Prozess, Vorgehensweise, | + | |kontinuierliches Arbeiten und Fortschritt | ::: | |
| - | | Code I: Codestyle wie Variablennamen, | + | |regelmässige Commits |
| - | | Code II :sauber | + | |mehrheitlich selbständig gearbeitet | ::: | |
| - | |Code III: Logik, Umgang mit falschen Eingaben, ... | | | + | |**Arbeiten mit Framework** | 10 | |
| - | |Code IV: Modellierung, | + | |Plug n' Play (einfaches Einbinden in Framework)| ::: | |
| - | |Mündliche Prüfung (2) | 20% der Gesamtnote | + | |Gesamter |
| + | |private vs. public| ::: | | ||
| + | |**Model vs. View** | ||
| + | |Modellierung (Abstrahierung) | ::: | | ||
| + | |Aufteilung in Methoden & Klassen (letztere optional) | ::: | | ||
| + | |Strikte Trennung von Model- | ||
| + | |**GUI / Darstellung** | 10 | | ||
| + | |anspruchsvolles GUI, Anwendung der Console-Befehle | ::: | | ||
| + | |**Programmieren**| 15 | | ||
| + | |Benennung von Variablen, Methoden usw.| ::: | | ||
| + | |sauber und effizient programmiert| | ||
| + | |Logik| ::: | | ||
| + | |Stabilität, Umgang mit falschen Eingaben | ::: | | ||
| + | |**Gamespezifischer Teil** | ||
| + | |unterschiedlicher Fokus je nach Game| ::: | | ||
| + | |**Mündliche Prüfung (2)** | 20 | | ||
| + | |**Total** | **100** | ||
| + | Aus den Punkten wird die Note linear berechnet (95% der Punkte: 6er, 0 Punkte: 1er). | ||
| * (1) Für allgemeine Fragen zu C#, dem Framework und OOP stehen die Lehrpersonen euch gerne zur Verfügung. Die konkrete Umsetzung des Games sollt ihr aber möglichst ohne Hilfe hinkriegen. | * (1) Für allgemeine Fragen zu C#, dem Framework und OOP stehen die Lehrpersonen euch gerne zur Verfügung. Die konkrete Umsetzung des Games sollt ihr aber möglichst ohne Hilfe hinkriegen. | ||
| * (2) ** Disclaimer: | * (2) ** Disclaimer: | ||
| + | <nodisp 2> | ||
| + | <color blue> | ||
| + | Änderungen für 2025 usw: Gute Kommentierung in Code sollten auch Punkte geben, zB 10 dafür, aber nur 10 für mündl. P oder so | ||
| + | </ | ||
| + | </ | ||
| Zeile 139: | Zeile 167: | ||
| // Clear console | // Clear console | ||
| Console.Clear(); | Console.Clear(); | ||
| + | |||
| + | // Hide cursor | ||
| + | Console.CursorVisible = false; | ||
| // Write line | // Write line | ||
| Zeile 238: | Zeile 269: | ||
| </ | </ | ||
| + | ==== OOP ==== | ||
| + | |||
| + | <code csharp> | ||
| + | private class Point | ||
| + | { | ||
| + | // Field | ||
| + | public int x; | ||
| + | public int y; | ||
| + | public string color; | ||
| + | |||
| + | // Constructor | ||
| + | public Point(int _x, int _y, string _color) | ||
| + | { | ||
| + | x = _x; | ||
| + | y = _y; | ||
| + | color = _color; | ||
| + | } | ||
| + | |||
| + | // Methode | ||
| + | public void SetToStart() | ||
| + | { | ||
| + | x = 0; | ||
| + | y = 0; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | private class PointWithProperty | ||
| + | { | ||
| + | // Field | ||
| + | private int _x; | ||
| + | private int _y; | ||
| + | private string _color; | ||
| + | |||
| + | // Property | ||
| + | public int x | ||
| + | { | ||
| + | get { return _x; } | ||
| + | set | ||
| + | { | ||
| + | if (value > 0) | ||
| + | { | ||
| + | _x = value; | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | _x = 0; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // Constructor | ||
| + | public PointWithProperty(int _xx, int _yy, string _col) | ||
| + | { | ||
| + | _x = _xx; | ||
| + | _y = _yy; | ||
| + | _color = _col; | ||
| + | } | ||
| + | |||
| + | // Methode | ||
| + | public void SetToStart() | ||
| + | { | ||
| + | _x = 0; | ||
| + | _y = 0; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public override Score Play(int level) | ||
| + | { | ||
| + | Console.CursorVisible = false; | ||
| + | |||
| + | Point p = new Point(10, 7, " | ||
| + | Console.SetCursorPosition(p.x, | ||
| + | Console.Write(p.color); | ||
| + | Console.ReadKey(); | ||
| + | |||
| + | p.SetToStart(); | ||
| + | |||
| + | Console.SetCursorPosition(p.x, | ||
| + | Console.Write(p.color); | ||
| + | Console.ReadKey(); | ||
| + | |||
| + | // Point is new data type, can thus create point array | ||
| + | Point[] points = new Point[] | ||
| + | { | ||
| + | new Point(1, 1, " | ||
| + | new Point(7, 5, " | ||
| + | new Point(2, 12, " | ||
| + | }; | ||
| + | return new Score(); | ||
| + | } | ||
| + | </ | ||
| ===== Kriterien ===== | ===== Kriterien ===== | ||