繁体   English   中英

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 或 1)。

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


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

#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 示例 - GIF

❌我得到的结果: Gif C++程序执行,请帮我解决

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

如果有人可以帮助我,你真的会帮助我!

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

堆栈溢出的家伙。 我开始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 is move() ) ...这就是我想要的! 第一个属性是垂直的Y ,第二个属性是在同一水平线上移动的X 全部用逗号分隔,注意:我把x作为变量而不是数字,因为我让它在 while 循环中移动。

输入字符串后,请记住:如果没有,请在前面放置一个空格,您会得到这样的结果

❌输出:CCCCCCCCCCCCCC++ colori

前面有一个空格,它似乎是不可见的,所以它可以工作。

☑️输出:C++ colori

在我输入Sleep(/*milliseconds*/); 记得把<windows.h>

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

===========

记住:如果你不放endwin (); 在循环结束时,您在 GIF 中看到的内容将会发生。 在你所有的下一个正常代码上。 这是我的第一个错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM