【问题标题】:How to control a cursor position in c++ console application?如何控制 C++ 控制台应用程序中的光标位置?
【发布时间】:2019-01-18 08:50:25
【问题描述】:

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

【问题讨论】:

  • 听起来你想要一个 GUI;我建议你找一个你喜欢的库(Qt 是一个好的开始,或者可能是 Open GL)
  • 如何最好地做到这一点取决于您使用的操作系统,例如窗户或Linux。对于 linux 有 ncurses 库,对于 windows 有 Console API。

标签: c++ cursor console-application


【解决方案1】:

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

#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!");
}

【讨论】:

  • 使用say system("cls");甚至“rem”也可以在 VS 中使用。原始 clrscr 显示:'clear' 不被识别为内部或外部命令、可运行程序或批处理文件。,但 gotoxy 也可以工作 ;-)
【解决方案2】:

在 windows 中你应该使用 windows api。

从那里,使用SetCursorPos()

【讨论】:

    【解决方案3】:

    查看ncurses 库以创建基于文本的用户界面。它适用于 Linux 和 Cygwin/MinGW 下的 Windows。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-06
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多