如何在C++控制台应用程序中控制光标位置?

3

我需要为学校项目创建一个控制台应用程序,与数独游戏有关,所以问题是我没有在算法上遇到任何困难,但我想知道是否可以使用C++绘制完整的数独表,并将空方格作为“数据”输入位置,以便用户可以使用箭头键将光标移动到特定数字的位置,并用适当的数字填充它。是否有一种方法可以这样做?


1
听起来你想要一个GUI;我建议你寻找一个你喜欢外观的库(Qt是一个不错的开始,或者也许是Open GL)。 - Tom
如何最好地实现这取决于您使用的操作系统,例如Windows或Linux。对于Linux,有ncurses库,对于Windows,有Console API。 - john
3个回答

5

这取决于你的操作系统/编译器。例如,在VC++中,你可以使用这个,示例可以在这里找到。

#include <windows.h>
int main(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {3, 6};
SetConsoleCursorPosition(hConsole, pos);
WriteConsole(hConsole, "Hello", 5, NULL, NULL);
return 0;
}

如果你想在Linux上使用g++编译器实现此功能,可以使用特殊的库,如curses,或者编写自己的实现(会有点困难)。对于仅需将光标放置在所需位置的情况,您可以使用以下代码:
void gotoxy(int x,int y)    
{
    printf("%c[%d;%df",0x1B,y,x);
}
void clrscr(void)
{
    system("clear");
}
int main() {    
    int x=10, y=20;
    clrscr();
    gotoxy(x,y);
    printf("Hello World!");
}

在VS中可以使用say system("cls");或者"rem"。原始的clrscr会显示:'clear' is not recognized as an internal or external command, operable program or batch file.但是gotoxy也能工作;-) - Tom

2
在Windows系统中,您应该使用Windows API。从那里开始,可以使用SetCursorPos()函数来实现。"最初的回答"

2

可以使用ncurses库来创建基于文本的用户界面,它在Linux下表现良好,在Cygwin / MinGW下也适用于Windows。

最初的回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接