Key Input Reader funktioniert nicht C#?
Hallo,
momentan habe ich das Tasten nicht gelesen werden bzw. überhaupt nicht in die Verzweigungen gesprungen wird.
Ich freue mich über jegliche Hilfe
Mfg
2 Antworten
Schau dir mal die Dokumentation zu object.Equals an.
Du vergleichst ein Objekt vom Typ ConsoleKeyInfo mit einem Objekt vom Typ String - das kann niemals true ergeben.
Du meinst offensichtlich
if (key.KeyChar == 'W')
etc.
(beachte die einfachen Anführungszeichen - ConsoleKeyInfo.KeyChar ist vom Typ Char, und Char ist etwas völlig Anderes als String)
wie meinst du das?
Muss ich nicht + 1 oder -1 rechnen um die Position zu ändern?
Jein.
Was passiert dann beim nächsten Schleifendurchlauf? Probier mal aus, was passiert, wenn du mehrere Male hintereinander z. B. auf D tippst.
das X bewegt sich nach dem ersten mal nicht mehr von der Stelle fast so als könnte ich in jede Richtung nur ein Kästchen
Überleg mal, woran das liegen könnte. Tipp: Funktionen ändern ihre Argumente NICHT (sofern nicht ausdrücklich verlangt - "ref").
Habe schon lange nicht mehr in C# programmiert, aber hier ein paar Tipps:
Nutze If else, anstatt mehrere if's. Sonst prüft dein Programm unnötig jedes if einmal nach. Separate If's solltest du nur nutzen, wenn du sie wirklich brauchst. Also das erste If lässt du und die anderen mit If else.
Habe mal geschaut wie die normalerweise einzeln keys einlesen und das gefunden(Quelle: https://www.geeksforgeeks.org/console-readkey-method-in-c-sharp/):
Console.ReadKey().Key != ConsoleKey.Enter
Die haben intern Constanten, welche mit den Key's abgeglichen werden. Also für ConsoleKey.A wird es vielleicht auch etwas geben? Und dann kannst du das nutzen, anstatt equals. Ich würde den Key dann auch über .Key holen und es genauso wie die dort machen.
Wenn du den Code hier gepostet hättest, hätte ich dir das fix alles geändert und du hättest nur copypaste machen müssen.
Übrigens fällt mir auf, dass du left und top nirgends änderst.