Thema Datum  Von Nutzer Rating
Antwort
Rot Labyrinth von Kommandozeile einlesen und grapfisch darstellen
10.04.2015 08:39:14 McStarProjekt
****
NotSolved
27.05.2018 20:57:25 Gast95111
NotSolved

Ansicht des Beitrags:
Von:
McStarProjekt
Datum:
10.04.2015 08:39:14
Views:
2878
Rating: Antwort:
  Ja
Thema:
Labyrinth von Kommandozeile einlesen und grapfisch darstellen

Hallo zusammen,

ich stehe hier vor einer Aufgabe, leider hat diese Aufgabe im Vergleich zu den vorherigen einen doch etwas größeren Sprung gemacht, für einen Programmier anfänger. Finde ich jedenfalls.

Ich habe die Problemstellung einmal rein kopiert.

Mit dem ersten Teil komme ich noch einigermaßen klar, jedoch beim zweiten Teil hänge ich ganz.

Da ich mich in der Welt des Programmierens als purer Einsteiger / Anfänger bezeichne, find ich die Aufgabe schon etwas "hoch" in einem Einführungsheft.

Jedenfalls im Vergleich zu dem Rest im Buch.

 

Nun die Frage ob ihr mir irgendwelche Tipps oder hilfreiche Seiten oder Beispiele sagen könnt, als Lösungsansatz ?

Mit allem was ich bisher so gefunden habe konnte ich nichts anfangen.

Danke.

 

 

 

 

Erster Teil:

a) Schreiben Sie ein Programm, das ein Labyrinth von der Kommandozeile einliest und graphisch
darstellt.
Das Labyrinth ist in der Datei maze.dat mit dem folgenden Inhalt abgelegt:
19
13
###################
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#.................#
#.#.#.### ###.#.#.#
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#.................#
###################
Der Wert in der ersten Zeile gibt die Anzahl der Spalten, der Wert in der zweiten Zeile die Anzahl
der Zeilen an. Danach folgt das Labyrinth, wobei die Zeichen '#' Wände darstellen. Die '.' sind
aufzusammelnde “Items”. Der Aufruf des Programms
game.exe < maze.dat

 

Die Spielfigur – hier durch das Zeichen '@' charakterisiert – soll in der Mitte des Labyrinths platziert
werden. Mit der Tastatur soll es nun möglich sein, die Spielfigur durch das Labyrinth zu steuern,
wobei die “Items” aufgesammelt (d.h. aus dem Labyrinth entfernt) werden sollen und die Wände
nicht durchdrungen werden dürfen.

 

Zweiter Teil:

Die Spielfigur soll nun alle Items in dem Labyrinth automatisch aufsammeln. Hierzu müssen Sie
einen Wegefindungsalgorithmus implementieren, wofür sich beispielsweise eine Breitensuche gut
eignet. Für die Breitensuche benötigen Sie eine Warteschlange (eine Queue) sowie eine Hashtable
(alternativ: Dictionary). Der Algorithmus lässt sich wie folgt skizzieren:
1. füge die aktuelle Spielerposition (x,y-Koordinaten) in die leere Queue ein;
2. so lange die Queue nicht leer ist,
2.1 hole das erste Koordinatenpaar aus der Queue;
2.2 falls sich hier ein Item befindet, breche ab: die Suche war erfolgreich.
2.3 für alle direkten Nachbarn (links, oben, rechts, und unten) dieser Koordinaten:
2.3.1 falls nicht blockiert (kein '#') und noch nicht in der Hashtable enthalten:
füge den Nachbarn in die Queue ein;
füge den Nachbarn als Key und die aktuellen Koordinaten als Value in die
Hashtable ein;
2.4 weiter mit 2.
Die Hashtable enthält nun Koordinatenpaare, wobei jedes besuchte Feld als Key vorkommt. Der zugehörige
Value ist das Koordinatenpaar, von dem aus man in der Suche gekommen ist (from). Um
nun von der Spielerposition zum Ziel zu finden, müssen Sie den Weg rückwärts in der Hashtable suchen.
Hierzu eignet sich ein Stack in der folgenden Art:
1. falls ein Ziel gefunden wurde, lege die Zielposition auf den leeren Stack;
2. lese den zugehörigen Value (die vorherige Position from) aus der Hashtable;
3. so lange from nicht der Ausgangsposition entspricht:
3.1 lege from auf den Stack;
3.2 lese die vorherige Position von from aus der Hashtable und weise diese from zu;
3.3 weiter mit 3.
Für den Weg der Spielfigur zum Ziel müssen Sie nun nur noch den Stack abarbeiten. Machen Sie
sich an einem einfachen Beispiel klar, dass der Algorithmus funktioniert. Schreiben Sie eine Klasse
ComputerPlayer, die diesen Wegefindungsalgorithmus implementiert. Die Spielfigur soll nun
selbständig mit einem Timer gesteuert alle Items des Labyrinths aufsammeln.
Erstellen Sie auch mindestens ein eigenes Labyrinth.
Hinweis: verwenden Sie die Klasse System.Drawing.Point zur Speicherung der Koordinaten
in den Collections-Datenstrukturen, da diese Klasse bereits die für die Hashtable benötigten
Methoden Equals und GetHashCode implementiert


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Labyrinth von Kommandozeile einlesen und grapfisch darstellen
10.04.2015 08:39:14 McStarProjekt
****
NotSolved
27.05.2018 20:57:25 Gast95111
NotSolved