Key Input Reader funktioniert nicht C#?

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)

Woher ich das weiß:Berufserfahrung – Software-Entwickler

PWolff  17.06.2022, 00:52

Übrigens fällt mir auf, dass du left und top nirgends änderst.

0
RoterNacken 
Fragesteller
 17.06.2022, 00:57
@PWolff

wie meinst du das?
Muss ich nicht + 1 oder -1 rechnen um die Position zu ändern?

0
PWolff  17.06.2022, 00:58
@RoterNacken

Jein.

Was passiert dann beim nächsten Schleifendurchlauf? Probier mal aus, was passiert, wenn du mehrere Male hintereinander z. B. auf D tippst.

0
RoterNacken 
Fragesteller
 17.06.2022, 01:14
@PWolff

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

0
PWolff  17.06.2022, 01:16
@RoterNacken

Überleg mal, woran das liegen könnte. Tipp: Funktionen ändern ihre Argumente NICHT (sofern nicht ausdrücklich verlangt - "ref").

0
PWolff  17.06.2022, 00:54

Wo Kampfsorb "else if" erwähnt - die übliche Methode, so etwas zu implementieren, ist "switch case".

0

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.

Woher ich das weiß:Studium / Ausbildung

RoterNacken 
Fragesteller
 17.06.2022, 01:10

ich versuch mich mal kurz daran

0