我在C中制作俄罗斯方块游戏。这个游戏必须在Linux上运行。 我需要获取当前光标位置以返回它们。 我不想使用curses和ncurses。
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;
我真的很感谢你的帮助!
答案 0 :(得分:0)
如果你真的不想使用(n)诅咒,你就会直接与终端接触。您可以使用VT100 DSR序列请求光标位置报告 - 写入字符
"\e[6n"
到终端,它将回复类似于以下的序列:
"\e[12;34R"
表示光标位于第12行,第34列(例如)。序列与用户输入一起发送,因此您可能需要采取特殊预防措施,以避免在尝试获取光标位置时消耗用户输入...
毋庸置疑,这是一个笨拙的界面,你最好避免首先使用它。跟踪光标在代码中的位置,您不需要询问终端的位置。