问题描述
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