Dr. Matthias Grabert Abteilung Angewandte Informationsverarbeitung 13. Januar 2003
Johannes Mayer Blatt 9


Uni Logo



Objektorientierte Softwareentwicklung mit C++ (WS 2002/2003)


Abgabetermin: 16. Januar 2003

1 Alles Schiebung! (10 Punkte)

Kennen Sie das Spiel Sokoban? Was das kennen Sie nicht! Ja, dann müssen wir das jetzt aber schleunigst nachholen. Also ein typisches Spielfeld sieht bei diesem Spiel wie folgt aus:

\includegraphics[width=8cm]{soko}
Bei Sokoban geht es darum, alle Kisten in einem Labyrith mit dem ,,Männchen`` auf die Positionen, welche durch Kügelchen gekennzeichnet sind, zu schieben. Ist diese Aufgabe erfüllt, so ist ein Level zu Ende und das nächste beginnt. Doch dies erfordert oft schon einiges an Hirnschmalz, das man dabei investieren muss.

Jetzt stellen wir uns mal auf den etwas abstrakteren Standpunkt. Das Spielfeld ist also eine $m \times n$-Matrix. Für jeden Matrixeintrag gibt es mehrere mögliche Belegungen: leer, Wand, Kiste, Zielposition, Kiste auf Zielposition, Männchen und Männchen auf Zielposition. Das Männchen kann sich bei jedem Schritt in eine von vier Richtungen um einen Schritt weiter bewegen, wenn

  1. die neue Position leer ist oder
  2. mit einer Kiste belegt und diese kann in der Bewegungsrichtung auf ein (in der Bewegungsrichtung angrenzendes) leeres Feld geschoben werden.

Schreiben Sie nun ein Programm, mit dem man ein Level Sokoban spielen kann. Ihr Programm soll das Spielfeld aus einer Datei einlesen. Stehen alle Kisten an der richtigen Stelle, so ist das Spiel zu Ende. Während des Spieles soll es jederzeit möglich sein, den Spielstand in eine (weitere) Datei zu speichern (als das Level-Spielfeld) und auf diesen Spielstand zurückzukehren (auch nach einem Neustart).

Zusatzaufgaben (5+5 zusätzliche Fleißpunkte)

  1. (5 Fleißpunkte)
    Machen Sie auch Ihrem Programm ein Spiel mit mehreren Leveln.
  2. (5 Fleißpunkte)
    Schreiben Sie einen Level-Editor, mit dem man das Spielfeld bearbeiten kann, d.h. Wände positionieren, Zielpositionen festlegen, Kisten aufstellen, etc. und auch ein Spielfeld mit anderer Größe anlegen kann.


Tipps:


Die Abteilung SAI wünscht Ihnen ein frohes Weihnachtsfest und einen guten Rutsch ins Neue Jahr!



Johannes Mayer 2003-01-13