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 ===== |