Universität Ulm - Abteilung Angewandte Informationsverarbeitung
Auch der Weihnachtsmann hat es im Dezember nicht einfach. Selbst wenn alle Geschenke verpackt und lieferfertig sind, steht Ihm noch eine Menge Arbeit bevor: Die Geschenke müssen verschickt werden.
So wie jedes Jahr, sind auch dieses Mal die
Geschenke (
#
)
kreuz und quer im Hause des Weihnachtsmannes
verteilt, wie das folgende Bild zeigt:
Die Aufgabe des Weihnachtsmannes (schwarzes Kästchen) ist es nun,
alle Geschenke in diesem ,,Labyrith`` auf die braun markierten
Positionen zu schieben.
Der Weihnachtsmann ist überglücklich, daß Ihm stets seine Rentiere bei
dieser schwierigen Aufgabe mit Rat und Tat zur Seite stehen, denn
ein falscher Zug und ein Geschenk kann nicht mehr ausgeliefert werden.
Damit Ihm dieses Malheur nicht passiert, sollen sie Ihn bei seiner
Aufgabe unterstützen: Schreiben Sie ein Programm, mit dem der
Weihnachtsmann sein Geschenkeverschieben üben kann. Ihr Programm
soll dabei das Spielfeld aus einer Datei einlesen. Stehen alle
Kisten an der richtigen Stelle, ist das Spiel zu Ende.
Das Spielfeld ist dabei eine
-Matrix, wobei die Größe der
Matrix nicht fest fixiert, sondern beliebig für jede Spielfeldgröße
dynamisch angelegt werden soll (calloc). Für jeden Matrixeintrag
gibt es mehrere mögliche Belegungen: leer, Wand, Kiste, Zielposition,
Kiste auf Zielposition, Weihnachtsmann auf leerem Feld und Weihnachtsmann auf
Zielposition. Der Weihnachtsmann kann sich bei jedem Schritt in eine von
vier Richtungen um einen Schritt weiter bewegen, wenn
Modularisieren Sie Ihr Programm, indem Sie zumindest ein Hauptmodul, ein
Modul für den abstrakten Datentyp ,,Labyrinth`` und ein Ausgabemodul
mit Escape-Sequenzen implementieren, sowie ein entsprechendes Makefile
schreiben.
Hinweise
Obiges Spielfeld könnte in ihrer Datei beispielsweise so aussehen:
19 11 ##### # # #* # ### *## # * * # ### # ## # ###### # # ## ##### __# # * * __# ##### ### #.## __# # ######### #######
Dabei steht 19 für die Breite und 11 für die Höhe des Spielfeldes, # für die Wand, * für eine Kiste, _ für eine Zielposition und . für die Startposition des Weihnachtsmanns. Leere Positionen sind durch Leerzeichen dargestellt.
Zur Abfrage einer Tasteneingabe erhalten Sie ein Beispielprogramm.
Infos zu Escape-Sequenzen finden Sie bei Übungsblatt 2 oder unter folgender
Web-Adresse:
http://www.catalyst.com/support/help/cstools3/visual/terminal/escapeseq.html
Viel Erfolg!