Size: 2755
Comment:
|
Size: 4194
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 19: | Line 19: |
'''Kurzbeschreibung:''' Implementieren Sie das Spiel ''2048'' mit Konsolengrafik ('''TODO''': mit ncurses?). | '''Kurzbeschreibung:''' Implementieren Sie das Spiel ''[[https://play2048.co/|2048]]'' mit Konsolengrafik ('''TODO''': mit ncurses?). |
Line 21: | Line 21: |
'''Hintergrund:''' | '''Regeln:''' |
Line 23: | Line 23: |
* Das Spiel kann zum Beispiel hier online gespielt werden: https://play2048.co/. | * 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. |
Line 25: | Line 26: |
'''Anforderungen (Minimum):''' | mit den Pfeiltasten nach links, nach rechts, nach oben und nach unten geschoben werden können. |
Line 27: | Line 28: |
'''Anforderungen (Optional):''' | '''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 * 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: 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 '''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 "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
- 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: 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
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).