我正在写一个棋盘游戏,我必须在屏幕上打印一些卡片。我在每个班级都有几个卡片和方法print_card()
的课程。
卡片的输出应该像这样:
| S D |
或在广场上的其他词语。
void ShipCard::print_card() {
std::cout << "|SHP|\033[5D\033[1E|" << pirates_cnt << " |\033[1A"; }
我使用ESC序列来移动光标。问题在于,当我尝试逐个打印多张卡片时,下一张卡片打印在上一张卡片的位置,尽管我将光标移回顶部。 但是,如果我打印一些文本而不是卡片,它会正常工作。
为什么它不能正常工作?是否有可能只使用ESC序列,没有像ncurses这样的东西?
例如,如果我使用
std::cout << "|A B|\033[5D\033[1E|" << "C D|\033[1A";
之后:
std::cout << "|M N|\033[5D\033[1E|" << "O P|\033[1A";
我明白了:
| A B |
| O P |
而不是:
| A B || M N |
| C D || O P |