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
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