You are not logged in.

  • Login

1

Tuesday, February 26th 2008, 10:55am

Jump'n Run in der Konsole

Hallo, ich möchte eine Art Jump'n Run in der Konsole programmieren. Jedoch habe ich das Problem, dass bei Bildänderungen mit Console.Clear() das Bild nicht schnell genug aubaut und es stark flimmert.

Die Bedingung für einen neuen Bildaufbau sieht folgendermaßen aus, in diesem Fall, wenn die Spielfigur nach rechts bewegt wird.

wcf.bbcode.c#.title

1
2
3
4
5
6
7
8
9
if (key == ConsoleKey.RightArrow)
            	{
                    	schritte++;
                    	LadeMap(map); //Neues Laden der Map, siehe unten
                    	map[positionx, positiony] = 'O'; //Position des Spielfigur
                    	Console.Clear();
                    	ZeigeMap(map); //Ausgeben des Arrays zur Anzeige
                    	System.Threading.Thread.Sleep(100);
            	}


wcf.bbcode.c#.title

1
2
3
4
5
6
7
8
9
10
11
static void LadeMap(char[] map)
            	{
                	/* Laden der "Level-Map" aus einer Textdatei. 
                 	* Anschließend wird das Array mit dem Textdateiinhalt 
                 	* befüllt. Das Array umfasst nur das Konsolenfenster 
                 	* in [23,78], wird die Figur weiterbewegt muss der 
                 	* weitere Levelinhalt nachgeladen werden. Hier kommt 
                 	* "schritte" ins Spiel und schließt beim Befüllen je 
                 	* nach Größe immer die ersten Zeichen aus der Textdatei 
                 	* aus. */
            	}


Hier ein Bild zur Veranschaulichung:



Das Umhergehen in dem Level funktioniert mit diesem Konzept bereits tadellos, jedoch flimmert es wie gesagt sehr heftig. Daher möchte ich euch fragen was ich hier besser machen könnte und ob es eventuell eine bessere Alternative zu Console.Clear gibt.

2

Monday, March 31st 2008, 9:18pm

Also ich denke es hat 3 Gründe, welcher der Hauptverurscher ist weiß nicht.


Ersten:

C# Quellcode

1
System.Threading.Thread.Sleep(100);


100ms ist wahrscheinlich zu lang.


Zweitens:

Ich weiß leider nicht dein Spielsystem, aber da es 2 Methoden gibt. Die eine zeigt die Karte an und die zweite Läd diese (neu).

Die Karte jedes mal neu zu laden ist eigentlich total sinnlos, stell
dir mal vor in irgendeinem Spiel musst du das ganze Level neu laden
wenn du einfach nur einen Schritt nach rechts machen möchtest.



Drittens:

Die Console jedesmal neu zu leeren ist irgendwie logisch, aber es
steigert die Performance wenn du einfach alles "nachoben schiebst".
Nich dass du nur chars mit Leerzeichen einfügst sondern deine Map so
arrangierts,
dass es ebend nach oben geschoben wird. Ich bin mir aber so sicher ob,
Console.Clear() das auch tut... musste es einfach mal probieren.





Aber meine persönliche Meinung ist, dass du es nicht mir .NET machen
sollst, weil die Performance sounso eigentlich grottig ist, aber wenn
dann würde ich es in einer Form realisieren. Und dann mit Bildern, so
wie im "Soldat" Spiel Stil. Falls du das kennst.



Ich hoffe das hilftt :D

Similar threads

Social bookmarks