2015-09-15 6 views
0

Я делаю игру на Visual Studio на C# (в консоли). Речь идет о диалогах, и вы можете ответить на них двумя вариантами: один ключ (для ответа на первый вопрос) равен 1, а другой - 2. Проблема в том, что при нажатии одной клавиши вы не можете нажать другую не более, я имею в виду, если вы нажмете 1, вы не можете нажать 2, и наоборот.2 ключевых варианта на консоли

static void Main(string[] args) 
{ 
    Console.WriteLine("Press 1 or 2 please..."); 
    //I know there are some errors in this code, i'm new at c# 
    ConsoleKeyInfo number1; 
    do 
    { 
     number1 = Console.ReadKey(); 
     Console.WriteLine("Number 1 was pressed"); 
     //This is the 1st answer 
    } 
    while (number1.Key != ConsoleKey.D1); 
    ConsoleKeyInfo number2; 
    //The problem is that when I already pressed D1 (1), I shouldn't be 
    //able to press D2 (2). And if I press D2 (2), I shoundn´t be able    
    //to press D1 (1). 
    do 
    { 
     number2 = Console.ReadKey(); 
     Console.WriteLine("Number 2 was pressed"); 
     //This is the 2nd answer 
    } 
    while (number2.Key != ConsoleKey.D2); 
    Console.ReadLine(); 
} 
+0

использовать логические переменные, чтобы сказать вам, была ли нажата кнопка, и если инструкции, чтобы увидеть, следует ли вам разрешать кнопку. – user1666620

+0

Вам нужно будет использовать Console.ReadLine(), если вы хотите дать пользователю возможность исправить опечатки. –

ответ

1

Проблема в коде заключается в том, что ваша логика неправильна для игры, которую вы хотите разработать.

В следующем коде я использую только один цикл Do/while, чтобы получить ключи, а затем решить, используя ключ, если ключ является одним из ключей, которые я хочу получить, если нет, я продолжаю цикл и снова попросите еще один ключ.

class Program 
{ 
    static void Main(string[] args) 
    { 
     bool knownKeyPressed = false; 

     do 
     { 
      Console.WriteLine("Press 1 or 2 please..."); 

      ConsoleKeyInfo keyReaded = Console.ReadKey(); 

      switch (keyReaded.Key) 
      { 
       case ConsoleKey.D1: //Number 1 Key 
        Console.WriteLine("Number 1 was pressed"); 
        Console.WriteLine("Question number 1"); 
        knownKeyPressed = true; 
        break; 

       case ConsoleKey.D2: //Number 2 Key 
        Console.WriteLine("Number 2 was pressed"); 
        Console.WriteLine("Question number 2"); 
        knownKeyPressed = true; 
        break; 

       default: //Not known key pressed 
        Console.WriteLine("Wrong key, please try again."); 
        knownKeyPressed = false; 
        break; 
      } 
     } while(!knownKeyPressed); 

     Console.WriteLine("Bye, bye"); 

     Console.ReadLine(); 
    } 
} 
+0

Большое спасибо! Он отлично работал, ты лучший! –