2017-11-16 1 views
0

내가 누른 키를 놓을 때 내 코드가 루프를 빠져 나가는 곳으로 만들어야합니다. 나는이 콘솔을하고 콘솔에 있어야합니다.C# Console Loop KeyUp On

다음은 코드 예제입니다. 위에서 볼 수 있듯이 키를 누를 때

ConsoleKeyInfo = ki; 

while (true) 
{ 
    ki = Console.ReadKey(); 

    if (ki.Key == ConsoleKey.A) 
    { 
     Console.Write("A"); 
    } 
} 

은, 그것은 콘솔에서를 작성합니다. 당신이 키를 누른 경우, 지속적으로 A를 A 키가 해제 될 때까지 콘솔이 ONCE을 기록 할 것입니다 내가 꿔

를 작성합니다. 그런 다음 A을 다시 누르면 다시 인쇄됩니다.

"KeyUp"사용에 대해 생각했지만 콘솔 응용 프로그램에서 사용할 수 없습니다. 그러나 다음을 수행하는 것이 뭔가 ... 기본적으로

ConsoleKeyInfo = ki; 

while (true) 
{ 
    ki = Console.ReadKey(); 

    if (ki.Key == ConsoleKey.A) 
    { 
     //I know the following isn't actually code, but it's explaining what I want to happen. 
     do (onKeyRelease) 
     { 
      Console.Write("A"); 
     } 
    } 
} 

, 나는 일이 하나의 일을 꿔 때 키가 해제 될 때까지 키를 누르면 루프. 키를 놓으면 루프가 다시 시작됩니다.

이 아이디어는 텍스트 기반 RPG 게임에 사용됩니다. 따라서 다른 키를 누르기까지 기다리십시오. (끝까지 다른 Console.ReadKey()를 추가하는 것을 포함하여)은 이상적이지 않습니다.

답변

0

마지막으로 누른 키를 저장하고 마지막으로 누른 키와 다른 문자 만 인쇄하십시오.

+0

나는 텍스트 기반 RPG 게임에 컨트롤이 사용하고 있습니다. 나는 내가 같은 방향으로 나아갈 수있는 곳에 그것을 만들어야한다. 난 그냥 반복 키를 따라 잡으려고 콘솔을 방지하기 위해 노력하고있어. – Minall

1

첫 번째 제안 - 콘솔에 "A"가 표시되면 루프를 "중단"했습니까?

2 제안 -

ConsoleKeyInfo = ki; 
var alreadyPressed = false 
while (true) 
{ 
ki = Console.ReadKey(); 


if (ki.Key == ConsoleKey.A && !alreadyPressed) 
{   
     Console.Write("A"); 
     alreadyPressed = true;   
}}` 
+0

나는 그것을 반복하고 싶다. 루프를 깨면 다른 것을 입력 할 수 없습니다. – Minall

+0

예, 있습니다. 불행히도 내 원래 코드와 똑같은 일을 할 것입니다. 루프를 편집하는 방법을 만드는 대신 키를 눌렀을 때만 진행하고 싶습니다. 그런 식으로 사람들은 열쇠를 누르고있을 수 없습니다. – Minall