65.9K
CodeProject 正在变化。 阅读更多。
Home

ConsoleLibrary,C# 控制台应用程序中使用的 C 函数

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (20投票s)

2004年5月17日

CPOL

2分钟阅读

viewsIcon

170078

downloadIcon

1162

一个 C++ 类库,包含 GetKey()、SetCursor()、Cls() 等函数,用于 C# 控制台应用程序

引言

在编写我的第一个 C# 控制台应用程序时,我缺少在不等待按键的情况下读取控制台键码的函数。作为一名 C++ 程序员,我搜索了类似 _kbhit()_getch() 的函数。但我只找到了类似 Console.Read()Console.ReadLine() 的函数。两者仍然需要等待按键。但我不想等待。我在 CODE PROJECT 上搜索了关键词 (kbhit, getch, GetKey),希望能快速找到解决方案。但很不幸,我没有找到任何结果!所以,我不得不自己解决。这就是我的解决方案。

解决方案

我构建了一个 C++ 类库,其中包含必要的类和函数。我将其命名为 ConsoleLibrary,因为其中有一些函数对 C# 控制台应用程序很有用。之后,我创建了四个 C# 控制台应用程序演示,这些演示引用了 ConsoleLibrary,以向您展示如何管理这些新函数。

  • ConsoleDemo1
    这是一个使用 ConsoleLibrary 的键盘测试示例。
  • ConsoleDemo2
    这是一个使用 ConsoleLibrary 的显示测试示例。
  • ConsoleDemo3
    这是一个使用 ConsoleLibrary 显示 ASCII 表的示例。
  • ConsoleDemo4
    这是一个使用 ConsoleLibrary 编写游戏(贪吃蛇)的示例。

使用代码

有两种使用 ConsoleLibrary 函数的方法。第一种方法是将 ConsoleLibrary 项目插入到您的解决方案文件中。之后,您可以在您的控制台应用程序项目中直接引用 ConsoleLibrary。在这种情况下,您可以在 ConsoleLibrary 源代码中进行调试,并且可以对其进行更改。

使用 ConsoleLibrary 函数的第二种方法是引用 ConsoleLibrary.dll。当您不想进行任何更改时,使用这种方法。

在这两种情况下,都不要忘记 using ConsoleLibrary;

然后,您可以直接在您的源代码中使用这些函数。以下是一些示例

刷新键盘缓冲区

  Keyboard.FlushKeys();

在循环中检查键码

  do
  {
    // get the key...
    key = Keyboard.GetKey();
    // check the key...
    if (key != (int)KeyCode.KeyNone)
    {
      if (key == (int)KeyCode.KeyF1)
        Console.WriteLine("You've pressed F1.");
    }
  
    // do something else
    ...
  } while (key!=(int)KeyCode.KeyEscape);

设置标题

  Display.SetConsoleTitleA(Copyright);

清屏

  Display.Cls();

设置前景和背景颜色

  Display.SetForeColor(Color.Yellow);
  Display.SetBackColor(Color.Lightred);

显示或隐藏光标

  Display.HideCursor();
  Display.ShowCursor();

设置光标位置

  Display.SetCursorPosition(2,10);

休眠

  Process.Sleep(80);

还有其他可用函数。请查看 ConsoleLibrary 的源代码。

关注点

通过这个 ConsoleLibrary,我能够将我的第一篇文章 爱因斯坦的谜题用 C++ 求解 从 C++ 移植到 C#。如果您对这个 C# 源代码感兴趣,请给我一个提示。

我希望我的 ConsoleLibrary 对您也有用。如果是这样,我很高兴,并祝您一切顺利...

Manfred...

历史

  • 2004年5月13日 提交此文章
© . All rights reserved.