Hallo Zusammen,
erstmal ein weniger Input. Ich habe eine typische Studien-Aufgabe, wo eine Art abgespecktes Pac-Man gebaut werden soll, dass mittels Datei eingelesen wird und auf einer Form dargestellt werden muss "#" = Wänden, "." = Items, "@" = Spielfigur.
Stand:
Ich habe ein komplett den Anforderungen entsprechenden lauffähigen Code, der das "Labyrinth" aus einem Textfile einliest und auf die Form bringt. Mithilfe der Pfeiltasten lässt sich meine Spielfigur durch das Labyrinth bewegen, wobei es an Wänden stoppt und Items aufsammelt (die verschwinden dann).
Problem:
Das Aktualisieren der Form flackert, da ich die Form mittels this.Refresh(); erneut "triggere" und damit meine Zeichenmethode erzwinge.
Eigene Implementierung:
Ich habe das Labyrinth zeilenweise eingelesen und die Zeilen dann in seine Chars zerlegt und habe am Ende ein 2D-Array mit Strings Spielfeld [Zeile, Spalte].
Danach habe ich einen PaintEventHandler verwendet und eine Methode erstellt, die mir entsprechend mein Array zeilenweise ausliest und dabei direkt auf die Form zeichnet. Ich hatte mal testweise mit "CreateGraphics()" und mit e.Graphics gezeichnet, beides verhält sich ähnlich. Zeichnen erfolgt dann mittels DrawString(...) direkt auf die Form. Abschluss der Methode bildet dann das Dispose() aller verwendeten Objecte (Font, Brush, Format, Form).
Bei Tastendruck wird das "Spielfeld-Array" geändert und die neue Version wieder auf das Form geschrieben mit selber Methode wie ursprünglich.
Ich hatte versucht das ganze mit einer override OnPaint()-Methode zu bewerkstelligen, aber es hat leider hinten und vorn nicht funktioniert. Die Studienhefte sind leider auch nicht sehr aufschlussreich was die Verwendung und Implementierung angeht und da es ein Fernstudium ist, ist man auch etwas auf sich gestellt. Mit den MS-Docs komme ich auch nicht so recht weiter.
P.S.:
Den Code direkt möchte ich nur auf Anfrage zur Verfügung stellen, da es sich um eine Hausarbeit handelt und später auch bewertet wird. Ich weiß dass das die Sache erschwert, aber ich denke es ist nicht ideal wenn der Code einfach und schnell im Netz zu finden ist. Ich hatte auch schon gesehen, dass hier scheinbar vor Jahren schonmal Leute diese Aufgabe hatten. ^^
erstmal ein weniger Input. Ich habe eine typische Studien-Aufgabe, wo eine Art abgespecktes Pac-Man gebaut werden soll, dass mittels Datei eingelesen wird und auf einer Form dargestellt werden muss "#" = Wänden, "." = Items, "@" = Spielfigur.
Stand:
Ich habe ein komplett den Anforderungen entsprechenden lauffähigen Code, der das "Labyrinth" aus einem Textfile einliest und auf die Form bringt. Mithilfe der Pfeiltasten lässt sich meine Spielfigur durch das Labyrinth bewegen, wobei es an Wänden stoppt und Items aufsammelt (die verschwinden dann).
Problem:
Das Aktualisieren der Form flackert, da ich die Form mittels this.Refresh(); erneut "triggere" und damit meine Zeichenmethode erzwinge.
Eigene Implementierung:
Ich habe das Labyrinth zeilenweise eingelesen und die Zeilen dann in seine Chars zerlegt und habe am Ende ein 2D-Array mit Strings Spielfeld [Zeile, Spalte].
Danach habe ich einen PaintEventHandler verwendet und eine Methode erstellt, die mir entsprechend mein Array zeilenweise ausliest und dabei direkt auf die Form zeichnet. Ich hatte mal testweise mit "CreateGraphics()" und mit e.Graphics gezeichnet, beides verhält sich ähnlich. Zeichnen erfolgt dann mittels DrawString(...) direkt auf die Form. Abschluss der Methode bildet dann das Dispose() aller verwendeten Objecte (Font, Brush, Format, Form).
Bei Tastendruck wird das "Spielfeld-Array" geändert und die neue Version wieder auf das Form geschrieben mit selber Methode wie ursprünglich.
Ich hatte versucht das ganze mit einer override OnPaint()-Methode zu bewerkstelligen, aber es hat leider hinten und vorn nicht funktioniert. Die Studienhefte sind leider auch nicht sehr aufschlussreich was die Verwendung und Implementierung angeht und da es ein Fernstudium ist, ist man auch etwas auf sich gestellt. Mit den MS-Docs komme ich auch nicht so recht weiter.
P.S.:
Den Code direkt möchte ich nur auf Anfrage zur Verfügung stellen, da es sich um eine Hausarbeit handelt und später auch bewertet wird. Ich weiß dass das die Sache erschwert, aber ich denke es ist nicht ideal wenn der Code einfach und schnell im Netz zu finden ist. Ich hatte auch schon gesehen, dass hier scheinbar vor Jahren schonmal Leute diese Aufgabe hatten. ^^