我知道如何使用SetCursorPosition或CursorLeft和CursorTop将光标设置到控制台中的特定点。那不是问题。
但是,我怎样才能得到那个点的价值呢?没有像Console.Cursor这样的东西吗?所以我可以得到那个位置的角色?也许是这样的:
char c = Console.GetCharAtCursor();
Run Code Online (Sandbox Code Playgroud)
没运气?
AFAIK,您必须将整个控制台缓冲区作为二维缓冲区读取,并使用光标的 X 和 Y 坐标作为该缓冲区的索引。看:
[DllImport("kernel32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
public static extern bool GetConsoleScreenBufferInfo(
IntPtr consoleHandle,
out CONSOLE_SCREEN_BUFFER_INFO consoleScreenBufferInfo);
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关缓冲区结构的信息:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093(v=vs.85).aspx
更新:
如果您对使用控制台 API 进行游戏编写感兴趣,有人为控制台编写了空间入侵者(实际上是 powershell),但所有 API 都是托管代码,而不是脚本。他有精灵/路径例程等 - 来源在http://ps1.soapyfrog.com/2007/08/26/grrr-source-code-include-invaders/
| 归档时间: |
|
| 查看次数: |
4139 次 |
| 最近记录: |