Laden...

Labyrinth erstellen

Erstellt von Patte89 vor 8 Jahren Letzter Beitrag vor 4 Jahren 8.152 Views
P
Patte89 Themenstarter:in
2 Beiträge seit 2016
vor 8 Jahren
Labyrinth erstellen

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

4.931 Beiträge seit 2008
vor 8 Jahren

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)

P
Patte89 Themenstarter:in
2 Beiträge seit 2016
vor 8 Jahren

Besten Dank für deine schnelle Antwort,klappt super 😁 👍

C
3 Beiträge seit 2019
vor 4 Jahren

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.

709 Beiträge seit 2008
vor 4 Jahren

Welche Fragen hast du denn?

C
3 Beiträge seit 2019
vor 4 Jahren

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.

C
3 Beiträge seit 2019
vor 4 Jahren

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.

4.931 Beiträge seit 2008
vor 4 Jahren

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.