[英]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.