2017-01-26 1 views
3

그래서 C#을 익히기 위해 콘솔 기반의 텍스트 게임을 만들고 있습니다.하지만 지금은 고집스럽게 생각하고 있습니다.콘솔 키 누르기가 작동하지 않습니까?

이것은 분명한 대답 일지 모르지만 나는 또 다른 한 쌍의 눈이 필요합니다. 나는 여기에 다른 질문들을 점검했고 그들은 나를 돕지 않는 것처럼 보인다. 내 Main()에서

, 나는 다음과 같은 한 :

 int age; 

     Console.Write("Before entering the unknown, could you please confirm your age? "); 
     age = Convert.ToInt32(Console.ReadLine()); 
     Console.WriteLine(""); 

     if (age < 18) 
     { 
      Console.WriteLine("I'm sorry, you'll now be transferred to a non-explicit version."); 
      Console.WriteLine("\n<Press any key to continue>"); 
      Console.ReadKey(); 
      Console.Write("\nPlease wait..."); 
      for (int t = 5; t >= 0; t--) 
      { 
       Console.CursorLeft = 22; 
       Console.Write("{0:00}" + " seconds remaining", t); 
       Thread.Sleep(1000); 
      } 
      Console.WriteLine(""); 
      Console.WriteLine("\nTo proceed, please press any key..."); 
      Console.ReadLine(); 

      NonExplicit(); 
     } 

셀프 설명. 그것은 NonExplicit() 방법을 명중하면, 다음이 호출됩니다

1)가 타격을 입력 할 필요 보인다 무엇

 char yes = Console.ReadKey().KeyChar; 
     string name; 

     Console.WriteLine("\nYou're awake? It's about time. Not old enough, eh? That sucks. \n\nListen, I really need your help. Would you be interested? Y/N"); 
     Console.ReadKey(); 

     if (yes == 'y' || yes == 'Y') 
     { 
      Console.Write("\nYou will?! Wow, That's fantastic. Right then, where shall I start? \nI know! How about telling me your name? "); 
      name = Console.ReadKey().ToString(); 
      Console.WriteLine("\nAhh yes, now you mention it, I certainly remember you, {0}!", name); 
     } 
     else 
     { 
      Console.WriteLine("\nYou don't want to help me? Oh, that's unfortunate... "); 
     } 

일이는 'Y'또는 'Y'는 눌렀을 때,이다 위의 것을 등록하십시오.

2) if & elseWriteLines을 실행하며, 1과 함께 사용한다고 가정합니다.

'y/Y'를 누르면 정확한 기준을 읽도록 코드를 어떻게 수정할 수 있습니까? 또는 Enter를 눌러 계속 진행할 필요가 없도록하려면 어떻게합니까?

+2

'char yes = Console.ReadKey(). KeyChar;'그리고 나서'WriteLine' 다음에 또 다른'Console.ReadKey();'? 두 번째'ReadKey()'를 대체하기 위해'char yes = Console.ReadKey(). KeyChar;'를 움직여보십시오. –

답변

1

아래 코드를 사용하지, 나는 그것을 테스트하고 그것을 작동합니다.

char yes = Console.ReadKey()Console.WriteLine()으로 옮겼습니다.
이름이 1 키 이상이므로 name = Console.ReadKey()Console.ReadLine()으로 변경했습니다.

 string name; 
     Console.WriteLine("\nYou're awake? It's about time. Not old enough, eh? That sucks. \n\nListen, I really need your help. Would you be interested? Y/N"); 
     char yes = Console.ReadKey(); 

     if (yes == 'y' || yes == 'Y') 
     { 
      Console.Write("\nYou will?! Wow, That's fantastic. Right then, where shall I start? \nI know! How about telling me your name? "); 
      name = Console.ReadLine(); 
      Console.WriteLine("\nAhh yes, now you mention it, I certainly remember you, {0}!", name); 
      Console.ReadKey(); // I put this here so the program wouldn't exit 
     } 
     else 
     { 
      Console.WriteLine("\nYou don't want to help me? Oh, that's unfortunate... "); 
     } 
+0

이것은 완벽하게 작동했습니다. 모두에게 도움을 주셔서 감사합니다. – Sean

+1

작동 코드 스 니펫을 제공해 주셔서 감사합니다. :) 그래서 우리 모두가 당신을 도울 수 있습니다. – EpicKip

0
char yes = Console.ReadKey(); // No need for .KeyChar 

INT 시대;

Console.Write ("알 수 없음을 입력하기 전에 나이를 알려주세요."); age = Convert.ToInt32 (Console.ReadLine()); Console.WriteLine (""); .

)는 (

int age = -1 
Console.WriteLine("Before entering the unknown, could you please confirm your age? "); 
while (age == -1) 
{ 
    if !(int.TryParse(Console.ReadLine(), out age)) 
    { 
     Console.WriteLine("Please enter a valid age"); 
    } 
} 

NAME = Console.ReadKey의 toString() 될 수있다;

name = Console.ReadLine(); 

(예 == 'Y'|| 예 == 'Y') 경우

if (yes.ToUpper() == "Y") 
1

될 수 있어야 당신의 코드는 Console.WriteLine("\nTo proceed, please press any key..."); 후에 Console.ReadLine(); e가 있습니다. 콘솔에 행을 입력하고 (enter 키를 누르기 전까지는 읽지 않음) 두 번째 방법에서 콘솔을 다시 읽으려고합니다 (단, 이번에는 단일 키).

먼저 Console.ReadLine()을 제거하면 도움이되지 않습니까?

그리고 당신은 예를 얻기 위해 노력하고있다/질문 (질문하기 전에 다른 ReadKey을하기 전에 아무 대답.

1
string result = Console.ReadLine(); 
if (result.ToUpper().Equals("Y")) 
    { 
    //any thing 
    } 
관련 문제