微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

让我解释一下:前面的句子不再移动(在X2坐标上保持静止),Now的句子制作入口动画,动画一结束,它与前面的其他句子一起成为静止的句子。移动下一个,并继续循环直到完成。

/*Marek R,it's my first time on StackOverFlow. Now here I put the code. sorry for the inconvenience :)*/ 

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

#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;
}

☑️我想要的结果(GIF): Gif Hello World example - GIF

❌我得到的结果:Gif C++ Program execution,pls help me solve it

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

请如果有人能帮助我,你真的会帮助我!

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

解决方法

stackoverflow 伙计们。我开始stackoverflow不好。对不起我错误的态度 (这就是为什么我没有得到答案)

但幸运的是我设法得到了我想要的结果!我可以帮到你!在文档中它不会说,但通过一个 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 循环中移动。

在输入字符串之后,记住:在前面加一个空格,否则你会得到这样的结果

❌输出:CCCCCCCCCCCCCC++ colori

之前有一个空格,它看起来是不可见的,所以它可以工作。

☑️输出: C++ colori

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

10 是字符数,我知道您可以通过使用 char [] =" your string " 自动化它并让程序计数来做得更好,但它是一个测试版。

============

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。