2012-03-20 41 views
2

我知道如何将光标设置在控制台中的特定点与SetCursorPosition左方向键CursorTop在一起。这不是问题。如何在C#控制台应用程序中获取光标处的字符?

但是,我怎么能得到那个点的价值?是不是有像Console.Cursor?所以我可以在那个位置找到角色?可能是这样的:

char c = Console.GetCharAtCursor(); 

不幸运?

+0

你能澄清一下你试图获得什么价值吗?你想获得你指向的字符串或数字的值或指针的坐标吗? – mservidio 2012-03-20 15:58:54

+0

该帖子已被编辑。你能再读一遍吗?如果您有其他方法可以做到这一点,请分享。 – 2012-03-20 16:14:00

回答

1

“左方向键”和“CursorTop”有干将,所以你可以只阅读:var cleft = Console.CursorLeft

4

据我所知,您已经阅读整个控制台缓冲区为一个二维缓冲区,并使用光标的X和Y坐标为该缓冲区的索引。请参阅:

[DllImport("kernel32.dll", CharSet=CharSet.Unicode, SetLastError=true)] 
public static extern bool GetConsoleScreenBufferInfo(
    IntPtr consoleHandle, 
    out CONSOLE_SCREEN_BUFFER_INFO consoleScreenBufferInfo); 

您可以阅读有关缓冲结构在这里:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093(v=vs.85).aspx

更新:

如果您有兴趣使用控制台的API为游戏写,有人写控制台的空间入侵者(实际上是powershell),但所有的API都是托管代码,而不是脚本。他有sprite /路径例程等 - 源码已结束http://ps1.soapyfrog.com/2007/08/26/grrr-source-code-including-invaders/

+0

但是如果我正在编写控制台游戏,它会很快/很有用吗? – 2012-03-20 16:11:44

+3

@UfukSarpSelçok:如果您正在编写控制台游戏,我建议您将自己的屏幕缓冲区副本保存在2D阵列中。 – Heinzi 2012-03-20 16:14:57

+0

@UfukSarpSelçok我更新了我的帖子,提供了一个适合游戏内容(精灵,路径等)的良好控制台库的链接。 – x0n 2012-03-21 13:10:35

0

实际上,您是否想要读取输入流?

Console.ReadKey(); 

例如。

+0

谢谢Jodrell。我有我需要的。 – 2012-03-20 16:22:13

相关问题