3532
Comment:
|
4192
|
Deletions are marked like this. | Additions are marked like this. |
Line 24: | Line 24: |
* Einlesen einer Instanz aus einer Datei in dem [[http://www.sokobano.de/wiki/index.php?title=Level_format|hier beschriebenen Format]]. | * Einlesen einer Instanz aus einer Datei in dem [[http://www.sokobano.de/wiki/index.php?title=Level_format|hier beschriebenen Format]]. Es reicht, wenn das einfache Dateiformat (in dem explizit jedes Zeichen dargestellt wird) unterstützt wird. |
Line 26: | Line 26: |
* Konsolengrafik (möglichst ansprechend und übersichtlich, die Anzahl Zeichen pro Zelle in x und y Richtung sollte konfigurierbar sein) | * Konsolengrafik: dabei sollte jedes Objekt (Box, Spieler, Teil der Mauer) in einer eigenen Farbe gezeichnet werden, mit einer über Kommandozeilenparameter einstellbaren Anzahl Zeichen pro Objekt in x und y Richtung (und einer vernünftigen Defaulteinstellung). |
Line 28: | Line 28: |
* Bedienung über die Tastatur mit den Pfeiltasten | * Bedienung über die Tastatur mit den Pfeiltasten. * 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: 5). |
Line 32: | Line 34: |
* Mehrere Instanzen (TODO: das sollte wohl zu den minimalen Anforderungen) | * Erkennen und Einlesen des RLE-kodierten Dateiformates (nicht viel mehr Arbeit). |
Line 34: | Line 36: |
* Highscore Liste | * Einlesen mehrerer Instanzen + ein Menu im Programm, in dem man die Instanz auswählen kann + Möglichkeiten, die Instanzen der Reihe nach durchzuspielen. * Minimale Anzahl der Züge pro Instant merken. * Was immer Ihnen noch (sinnvolles und sinnloses) einfällt. |
Projekt zur Vorlesung '''Programmieren in C++''' im Sommersemester 2016
Es gibt drei Projekte zur Auswahl:
Projekt 1: Sokoban (das Spiel)
Projekt 2: Sokoban (der Löser)
Projekt 3: Ein Projekt eigener Wahl (nur für Fortgeschrittene)
Im Folgenden eine detailliertere Beschreibung der drei Projekte
Projekt 1: Sokoban (das Spiel)
Kurzbeschreibung: Das Spiel Sokoban soll mit Konsolengrafik realisiert werden.
Hintergrund: Eine voll-funktionale Online-Version des Spiels findet sich zum Beispiel hier: http://sokobanonline.com .
Anforderungen (Minimum): Folgende Anforderungen müssen für volle Punktzahl mindestens erfüllt sein
Einlesen einer Instanz aus einer Datei in dem hier beschriebenen Format. Es reicht, wenn das einfache Dateiformat (in dem explizit jedes Zeichen dargestellt wird) unterstützt wird.
- Konsolengrafik: dabei sollte jedes Objekt (Box, Spieler, Teil der Mauer) in einer eigenen Farbe gezeichnet werden, mit einer über Kommandozeilenparameter einstellbaren Anzahl Zeichen pro Objekt in x und y Richtung (und einer vernünftigen Defaulteinstellung).
- Bedienung über die Tastatur mit den Pfeiltasten.
- 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: 5).
Anforderungen (optional): Hier ein paar Ideen für optionale Erweiterungen:
- Erkennen und Einlesen des RLE-kodierten Dateiformates (nicht viel mehr Arbeit).
- Einlesen mehrerer Instanzen + ein Menu im Programm, in dem man die Instanz auswählen kann + Möglichkeiten, die Instanzen der Reihe nach durchzuspielen.
- Minimale Anzahl der Züge pro Instant merken.
- Was immer Ihnen noch (sinnvolles und sinnloses) einfällt.
Projekt 2: Sokoban (automatischer Löser)
Kurzbeschreibung: Ein Programm, dass versucht eine gegebene Instanz zu lösen. Die unten [TODO] angegebenen Instanzen sollten dabei alle korrekt gelöst werden.
Hintergund: TODO.
Anforderungen (Minimum): Folgende Anforderungen müssen für volle Punktzahl mindestens erfüllt sein
- Eine Methode, die einfache [TODO: erklären] Deadlocks erkennt.
- Ein Brute-Force Löser, der alle Möglichkeiten durchspielt, bis man einen Deadlock, eine vorherige Konfiguration oder die Lösung erreicht.
Die Schritte des Lösers und der jeweilige Zustand des Spiels sollen visualisiert werden. Sie können dazu auf die auf dem Wiki bereitgestelle libsokoban Bibliothek zurückgreifen. Diese stellet eine Funktion [TODO: genau spezifizieren] zur Verfügung, die für eine gegebene Instanz und eine gegeben Zugfolge, den Zustand der Instanz nach diesen Zügen malt.
- Alle Funktionalität, die mit Ein- bzw. Ausgabe zu tun hat, sollte sauber getrennt von den anderen Teilen in eigenen Methoden stehen und diese Methoden brauchen nicht getestet zu werden. Für alle anderen Methoden soll es selbstverständlich wie gehabt einen Unit Test geben.
Anforderungen (optional): Hier ein paar Ideen für optionale Erweiterungen:
- Alle möglichen fortgeschritteneren Strategien.
Ansprechendere Grafik als in der gegebenen libsokoban.
Projekt 3: ein Projekt eigener Wahl
Kurzbeschreibung: Ein Projekt eigener Wahl, das den beiden vorherigen von Umfang und Komplexität vergleichbar ist.
Hintergrund: Ihnen überlassen.
Anforderungen (Minimum):
- Ein Projekt eigener Wahl ist nur für diejeniger Kursteilnehmer*innen gedacht, die in den bisherigen Übungsblättern fast volle Punktzahl erreicht haben und die das bisher vermittelte Wissen relativ problemlos voll durchdrungen haben.
- Sind diese Voraussetzungen erfüllt, bitte bis Donnerstag, den 7. Juli 2016, eine kurze Mail an Ihre*n Tutor*in (mit Cc an Axel Lehmann und an Hannah Bast) mit einer kurzen Beschreibung Ihres Projektes (ein Absatz) und einer kurzen Begründung, dass es an Umfang und Komplexität mit Projekt 1 oder 2 oben vergleichbar ist (ein Absatz).