C++ 如何用 ncurses.h 移动文本?

C++ how to move Text with ncurses.h?

C++ 如何将文本从屏幕外移动到终端内(动画 20/50 毫秒)然后停止动画。与 ncurses.h ?请举例

对于包含颜色的每一行文本,可能有一个循环将 X 坐标从 (x = 0-number characters text-1) 增加到 (x = 2 or 1)。

我解释一下:前一句不再动了(在X2坐标上静止不动),现在这句做进入动画,动画一结束就和前面的一句一起变成静止的句子句子。移动下一个,并继续循环直到完成。


我没有得到我想要的结果:(这是代码)

#include <iostream> 
#include <windows.h>
#include <ncurses.h>

using namespace std;

void tdnVoid(short colore)
{
    HANDLE a = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(a, colore);
}

int main()
    {
    initscr();
    int b = 0;

    while (b != 256)
    {
    b++;
    refresh();
    move(0, 0);
    tdnVoid(b);
    cout << b << ". ■ ";
    cout << "\n";
        if (b % 16 == 0)
        {
        cout << "\n";
        }
    Sleep(100);
}

return 0;
}

☑️the result I wanted (GIF): Gif Hello World example - GIF

❌the result I got: Gif C++ Program execution, pls help me solve it

新编辑: 根据文档,你可以使用这个: mvprintw(y,x,"your string",); refresh(); 但我使用并尝试了大约 2 个小时,出现错误;

pls if someone can help me, you will really help me!

这个程序看似无用,但我是用它来学习C++的,一旦我学会了这个,我就可以使用相同的功能并复杂化并做更多有趣的事情。希望你理解我(有些人用 ncurses 创建了诺基亚的 Snake 游戏,有些人在 space 中旋转 3D 东西)谢谢请帮助我理解 :)

Whosebug 伙计们。我开始 Whosebug 不好。对不起我错误的态度 (这就是我没有得到答案的原因)

幸好我得到了我想要的结果!我可以为您提供帮助!文档里没说,但是通过while()循环我做到了!

int main()
{
initscr();

int x = -1;

while (x < 22)
{
    x++;
    refresh();
    mvprintw(0, x, " C++ colori", 10);
    Sleep(300);
}
//other my code
}

在放置 refresh (); 之前,这对更新很重要,然后 mvprintw() 就像 cout << /*from <iostream> library*/ 但带有 mv(mv 是 move())...我想要什么!第一个属性是 Y 是垂直的,第二个属性是 X 是在同一水平线上移动。 全部用逗号分隔,注意:我把 x 作为变量而不是数字,因为我让它在 while 循环中移动。

在放入字符串后,记住:在前面放一个space,否则你会得到这样的结果

❌output: CCCCCCCCCCCCCC++ colori

之前有一个space,好像是看不见的,所以有效。

☑️output:                                    C++ colori

我放完Sleep(/*milliseconds*/);记得放<windows.h>

10 是字符数,我知道您可以使用 char [] =" your string " 将其自动化并使程序计数,但它是测试版。

===========

记住:如果你不把 endwin (); 放在循环的末尾,你在 GIF 中看到的就会发生。在你所有的下一个正常代码上。 here my first Bug