ConsoleLibrary,C# 控制台应用程序中使用的 C 函数
一个 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日 提交此文章