Ich habe folgende Aufgabe bekommen:
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 ---- Spalten
13 ---- Zeilen
###################
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#.................#
#.#.#.### ###.#.#.#
#.................#
#.#.###.#.#.###.#.#
#.#.#...#.#...#.#.#
#.#.###.#.#.###.#.#
#.................#
###################
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 <-- ich soll die dat datei auf die exe schieben und somit einlesen
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.
Mein Problem dabei ist:
die datei einlesen wenn sie auf die exe geschoben wird
und derzeit öffne ich die win-Form so ... ich bekomme aber nichts übergeben
_thread = new Thread(new ParameterizedThreadStart(FormStart));
_thread.Start();
}
static void FormStart(object param)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
so soll es dann hinterher aussehen ...
[Siehe Bild unten] - Coffeebean
(mit dem Zeichnen teste ich es dann erstmal selber ^^)
vielleicht hat ja einer eine idee
mfg
Patte
Hallo,
wenn es dir (erstmal) nur um den Parameter geht, dann schau in Befehlszeilenargumente, d.h. mittels der Main-Methode werden die Parameter an das Programm übertragen.
PS: Der Code mit dem Thread ist völliger Quatsch. Für ein WinForms-Programm sollte die Methode einfach so aussehen:
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Hier kannst du jetzt die Parameter 'args' auswerten (und z.B. dann die Datei einlesen).
Und für das Zeichnen lies mal [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)
Hallo,
da ich das selbe Problem habe und noch ein paar weitere Fragen, wollte ich mal rausfinden, ob die Nutzer, die sich zu diesem Thema gemeldet haben, noch online kommen?
Ich muss auch dieses Labyrinth-Spiel erstellen.
Hallo Pinki,
danke für deine Teilnahme.
Ich habe im Endeffekt die selben Angaben wie Patte89, nur dass ich das noch nicht so ganz verstanden habe.
Ich habe eine Textdatei und möchte diese nun meiner WinForms Anwendung übergeben.
Ich habe das schon einmal für die Konsole erledigt, dort hat es funktioniert, allerdins weiß ich jetzt nicht, wie ich das Programm umändern muss, damit es auch für WinForms funktioniert.
Soll ich mal meinen Quellcode hier reinstellen? Falls ja, wie mache ich das? Einfach reinkopieren oder mit Screenshot? Sorry für die Anfängerfragen, bin erst seit eben angemeldet.
zur Info:
ich habe es mit der Konsole einmal mit
StreamReader reader = new StreamReader(pathread);
var input = reader.ReadToEnd();
Console.Write(input);
reader.Close();
versucht, aber nicht ganz hinbekommen
und einmal mit
string fileContent = File.ReadAllText("maze.dat");
fileContent = fileContent.Replace("\r", "");
string [] lines = fileContent.Split('\n');
gemacht, hier läuft es mit der Konsole.
Und nun möchte ich eben das, was mit der Konsole ausgegeben wird als WinForms Fenster ausgeben.
WinForms arbeitet ereignisorientiert (anstatt prozedural wie in der Konsolenprogrammierung), s. [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox) (also der gleiche Link, den ich damals schon angegeben hatte).
PS: Verwende die passenden C#-Tags für den Code hier im Forum.