我正在用C语言制作俄罗斯方块游戏。这个游戏必须在Linux上运行。 我需要获取当前光标位置才能返回它们。 我不想使用诅咒和诅咒。
point GetCurrentCursorPos(void)
{
point curPoint;
CONSOLE_SCREEN_BUFFER_INFO curInfo;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &curInfo);
curPoint.x=curInfo.dwCursorPosition.X;
curPoint.y=curInfo.dwCursorPosition.Y;
return curPoint;
}
这是我想要更改的代码。
点结构看起来像这样。
typedef struct __point
{
int x;
int y;
} point;
我非常感谢您的帮助!
如果你真的不想使用(n(curses,你就只能直接与终端接口。您可以使用 VT100 DSR 序列请求光标位置报告 -- 写入字符
"e[6n"
到终端,它将回复类似于以下内容的序列:
"e[12;34R"
指示光标位于第 12 行第 34 列(例如(。该序列与用户输入内联发送,因此您可能需要采取特殊的预防措施,以避免在尝试获取光标位置时消耗用户输入...
不用说,这是一个笨拙的界面,你最好首先避免需要它。在代码中跟踪光标的位置,您无需询问终端它在哪里。