Size: 4194
Comment:
|
Size: 4378
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 33: | Line 33: |
* Punktzahl anzeigen * Anzahl Züge anzeigen * Programm beenden * Meldung anzeigen, wenn Spiel gewonnen bzw. verloren wurde. |
|
Line 35: | Line 39: |
* TODO: Undo Funktion, wobei die Anzahl Züge die man höchstens hintereinander rückgängig machen kann ein Argument in der Kommandozeile sein sollte (Default: 1). * SinnvollEs soll selbstverständlich auf alles geachtet werden, was Sie in der Vorlesung gelernt haben: gutes Klassendesign, Trennung in .h und .cpp Dateien, const correctness, valgrind soll ohne Fehler durchlaufen, allgemein die 10 Gebote des Ü1. e Trennung von Logik und Grafik |
* TODO (optional?): Undo Funktion, wobei die Anzahl Züge die man höchstens hintereinander rückgängig machen kann ein Argument in der Kommandozeile sein sollte (Default: 1). * TODO: Beliebige Spielfeldgrößen. * Sinnvolles soll selbstverständlich auf alles geachtet werden, was Sie in der Vorlesung gelernt haben: gutes Klassendesign, Trennung in .h und .cpp Dateien, const correctness, valgrind soll ohne Fehler durchlaufen, allgemein die 10 Gebote des Ü1. e Trennung von Logik und Grafik |
Projekt "Programmieren in C++" im Sommersemester 2020
Contents
Es gibt drei Projekte zur Auswahl:
Projekt 1: 2048 (das Spiel)
Projekt 2: 2048 (automatischer Löser)
Projekt 3: Ein Projekt eigener Wahl (nur für Fortgeschrittene)
Im Folgenden werden wir alle drei Projekte detaillierter beschreiben.
Projekt 1: 2048 (das Spiel)
Kurzbeschreibung: Implementieren Sie das Spiel 2048 mit Konsolengrafik (TODO: mit ncurses?).
Regeln:
- 2048 wird auf einem 4x4 großen Spielfeld gespielt.
Auf dem Spielfeld befinden sich sog. Kacheln. Jede Kachel die mit Zweierpotenzen (2, 4, 16, 32, ..., 131072) beschriftet ist.
mit den Pfeiltasten nach links, nach rechts, nach oben und nach unten geschoben werden können.
Anforderungen (Minimum): Folgende Anforderungen müssen Sie mindestens erfüllen, um volle Punktzahl zu erhalten:
- Korrekte Implementierung (nach den oben genannten Regeln)
- Farbliche Markierung der Kacheln
- Punktzahl anzeigen
- Anzahl Züge anzeigen
- Programm beenden
- Meldung anzeigen, wenn Spiel gewonnen bzw. verloren wurde.
- Bedienung über die Pfeiltasten
- Konsolengrafik: Darauf achten, dass die Werte in den Kacheln genug Platz haben, und dass größere Werte nicht das Design zerstören.
- TODO (optional?): Undo Funktion, wobei die Anzahl Züge die man höchstens hintereinander rückgängig machen kann ein Argument in der Kommandozeile sein sollte (Default: 1).
- TODO: Beliebige Spielfeldgrößen.
- Sinnvolles soll selbstverständlich auf alles geachtet werden, was Sie in der Vorlesung gelernt haben: gutes Klassendesign, Trennung in .h und .cpp Dateien, const correctness, valgrind soll ohne Fehler durchlaufen, allgemein die 10 Gebote des Ü1. e Trennung von Logik und Grafik
Anforderungen (Optional): Wenn Sie möchten, können Sie ihr Spiel um beliebige Funktionalitäten erweitern (müssen es aber nicht, um volle Punktzahl zu bekommen). Hier sind einige Ideen:
* Shuffle Mode * Animiertes Bewegungen der Kacheln * "Evil"-Kacheln: Kacheln, die keinen Wert haben aber trotzdem Platz auf dem Spielfeld brauchen. Können aufgelöst werden, wenn sie auf eine weitere Evil-Kachel treffen.
Projekt 2: 2048 (automatischer Löser)
Kurzbeschreibung: Implementieren Sie ein Programm, das versucht 2048 zu lösen.
Hintergund:
Anforderungen (Minimum):
Anforderungen (Optional):
Projekt 3: Ein Projekt Ihrer Wahl
Kurzbeschreibung: Alternativ zu den beiden oben beschriebenen Projekten können Sie auch ein Projekt Ihrer Wahl, das in Umfang und Komplexität vergleichbar zu den beiden Projekten ist, wählen.
Hintergrund: Ist Ihnen überlassen.
Anforderungen (Minimum):
- Ein Projekt eigener Wahl ist nur für diejenigen Kursteilnehmer*innen gedacht, die in den bisherigen Übungsblättern fast volle Punktzahl erreicht haben und die das bisher vermittelte Wissen relativ problemlos durchdrungen haben.
- Das Projekt muss in Umfang und Komplexität vergleichbar zu den beiden oben beschriebenen Projekten sein.
- Sie müssen in der Lage sein, das Projekt selbstständig durchzuführen und bei eventuellen Problemen eigenständig Lösungsstrategien zu erarbeiten. Sie können bei Problemen natürlich gerne im Forum nachfragen; Sie müssen aber damit rechnen, dass wir Ihnen nicht bei jedem einzelnen Problem weiterhelfen können.
- Sind diese Voraussetzungen erfüllt, schreiben Sie bitte bis spätestens Sonntag, den 26. Juli 2020, eine kurze Mail an Ihren Tutor (mit Cc an Claudius Korzen und Hannah Bast) mit einer kurzen Beschreibung Ihres Projektes (ein Absatz) und einer kurzen Begründung, warum es in Umfang und Komplexität mit Projekt 1 oder 2 vergleichbar ist (ebenfalls ein Absatz). Wir werden die bis Sonntag eingegangenen Mails dann am Montag, den 27. Juli 2020 besprechen und Ihnen dann anschließend Bescheid geben, ob wir einverstanden sind.
- Sollten wir einverstanden sein, sind Sie nicht verpflichtet, dieses Projekt auch tatsächlich zu bearbeiten. Sie können jederzeit wieder zu Projekt 1 oder Projekt 2 wechseln (z.B. wenn Sie merken, dass Ihr Projekt doch zu umfangreich/schwierig/langweilig ist).