0

我目前正在开发一个小型彩票控制台游戏,并想添加一个“工作”机制。我创建了一个新方法,并希望添加多个任务,例如多次按空格键等特定键。所以像这样(但实际上有效):

static void Work()
{
  Console.WriteLine("Task 1 - Send analysis to boss");
  Console.WriteLine("Press the spacebar 3 times");
  Console.ReadKey(spacebar);
  Console.ReadKey(spacebar);
  Console.ReadKey(spacebar);
  Console.WriteLine("Task finished - Good job!");
  Console.ReadKey();
}
4

1 回答 1

0

Console.ReadKey()方法返回一个ConsoleKeyInfo结构,该结构为您提供有关按下了哪些键和修饰符所需的所有信息。您可以使用此数据过滤输入:

void WaitForKey(ConsoleKey key, ConsoleModifiers modifiers = default)
{
    while (true)
    {
        // Get a keypress, do not echo to console
        var keyInfo = Console.ReadKey(true);
        if (keyInfo.Key == key && keyInfo.Modifiers == modifiers)
            return;
    }
}

在您的用例中,您可以这样称呼:

WaitForKey(ConsoleKey.SpaceBar);

或者您可以添加一个WaitForSpace专门检查ConsoleKey.SpaceBar没有修饰符的方法。

对于更复杂的键盘交互,如菜单和一般输入处理,您需要功能更强大的东西,但基本概念是相同的:用于Console.ReadKey(true)获取输入(不显示按下的键),检查结果ConsoleKeyInfo记录以确定按下的内容等。但是对于等待按下特定键的简单情况,这将起到作用。

于 2022-03-01T23:10:04.323 回答