【问题标题】:Is there a replacement to Console.ReadKey()?Console.ReadKey() 有替代品吗?
【发布时间】:2021-03-05 23:23:47
【问题描述】:

我需要替换为Console.ReadKey(),这样我就可以同时按多个键。

我需要这个是因为我正在用 C# 制作控制台 ASCII 游戏引擎。如果我做了一个可控的播放器,我只能向上、向下、向左和向右移动。完全没有对角线移动,只是因为 Console.ReadKey() 允许一次按下一个键。

任何帮助将不胜感激! :)

我可以将包安装到我的解决方案项目中

按键输入的函数是这样的(每帧都会调用它来检查按键是否被按下):

public static char Key() // returns the pressed key in char
        {
            ConsoleKeyInfo keyPress;
            if (Console.KeyAvailable) // will read the key only if it is pressed (can cause input lag on low frame rates)
            {
                keyPress = Console.ReadKey(true);
                return char.ToUpper(keyPress.KeyChar);
            }
            return default;
        }

【问题讨论】:

  • 控制台并不是一个真正适合游戏的环境。您选择它有什么特别的原因吗?
  • 嗯,我想要一种简单的方法来制作 ASCII 游戏引擎,用字母、数字和符号替换像素。我认为看到使用 ASCII 制作独立游戏并了解开发人员如何处理在控制台 C# 中制作游戏的图形限制会很有趣

标签: c# .net input keyboard


【解决方案1】:

我找到了更好的替代品!只需安装名为 EZInput 的 NuGet 包,它可以更好地控制一次输入一个键。

我尝试在网上查找 EZinput 的示例和文档,但找不到任何东西。我学会了如何自己使用它。很简单,只需在代码中输入 EzInput 和点,它就会显示它所提供的所有内容。

如果你想按 W 做某事,这是你应该做的:

if (EZInput.Keyboard.IsKeyPressed(EZInput.Key.W))
{
    // Do something...
}

不过最好输入using EZInput;,这样就不用每次都输入名字了。

【讨论】:

  • 太好了。使您的答案对其他人更好(并可能使您获得更多支持)的原因是 a) 链接到有关 EZInput 的资源和 b) 显示一个快速代码示例,说明您如何使用它来做您需要的事情。
  • 我尝试在网上查找 EZinput 的示例和文档,但找不到任何东西。我学会了如何自己使用它。很简单,只需在代码中输入 EzInput 和点,它就会显示它所提供的所有内容。
  • 这不是重点。最好的 StackOverflow 答案包含回答特定问题的可用示例,而不仅仅是一个模糊的“使用这个库,它很棒”的指令。否则很可能会导致更多人提出类似“我尝试使用 EZInput 来解决与 Ali107 的问题相同的问题,但它不起作用......我做错了什么?”这样的问题。首先向人们展示您所做的事情会更有用。而且,如果没有此库的在线文档,您至少可以链接到 Nuget.org 上的条目(因此没有歧义)。
猜你喜欢
  • 1970-01-01
  • 2011-07-17
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-11
  • 1970-01-01
相关资源
最近更新 更多