2012-03-20 4 views
2

나는 또는 함께 CursorTop을 CursorLeft SetCursorPosition와 콘솔의 특정 지점으로 커서을 설정하는 방법을 알고있다. 그건 문제가되지 않습니다.C# 콘솔 응용 프로그램에서 커서의 문자를 어떻게 얻을 수 있습니까?

그러나은 어떻게 그 값을 얻을 수 있습니까? 콘솔 같은 것이 없습니다.? 그래서 나는 그 위치에서 성격을 얻을 수 있습니까? 아마도 다음과 같을 수 있습니다 :

char c = Console.GetCharAtCursor(); 

행운이 없습니까?

+0

어떤 가치를 얻으려고하는지 명확히 할 수 있습니까? 포인터를 가리키는 문자열이나 숫자의 값을 얻으려고합니까? – mservidio

+0

게시물이 편집됩니다. 다시 읽을 수 있니? 다른 방법이 있다면 공유하십시오. –

답변

1

'CursorLeft'와 'CursorTop'당신은 단지 그들을 읽을 수 있도록 게터가 : 두 개의 차원 버퍼로 전체 콘솔 버퍼를 읽을 var cleft = Console.CursorLeft

4

AFAIK를, 당신이 한 커서의 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는 스크립트가 아닌 관리 코드입니다. 그는 스프라이트/경로 루틴 등을 가지고 있습니다 - 소스는 끝났습니다 http://ps1.soapyfrog.com/2007/08/26/grrr-source-code-including-invaders/

+0

하지만 콘솔 게임을 프로그래밍하는 경우 빠르거나 유용할까요? –

+3

@ UfukSarpSelçok : 콘솔 게임을 프로그래밍하는 경우 화면 배열의 사본을 2D 배열에 보관하는 것이 좋습니다. – Heinzi

+0

@ UfukSarpSelçok 게임 내용 (스프라이트, 경로 등)에 대한 좋은 콘솔 라이브러리에 대한 링크가있는 게시물을 업데이트했습니다. – x0n

0

실제로 입력 스트림을 읽으려고합니까?

Console.ReadKey(); 

.

+0

고마워, 조드 렐. 나는 필요한 것을 얻었습니다. –

관련 문제