2012-03-20 134 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

相關問題