【发布时间】:2015-09-23 06:15:23
【问题描述】:
对于其他发现此问题的人,可以使用 conio.h 库中的 kbhit() 函数来完成。只需在我放 SOMETHING 的地方插入 !kbhit() ,它就会正确循环,但是我正在寻找一种没有库的方法。
我是一个尝试在控制台中创建简单动画的初学者。动画会在控制台的右手边出现 UP 字样,而在右手边出现 DOWN 字样。到目前为止,我已经让动画完成了一次迭代,但我正在尝试让它重复,看起来文本会回到顶部或底部并再次执行,直到用户按下 ENTER 键.
我的书(我是根据教科书自学的)看起来似乎没有任何特定的库,除了 iostream 和 windows.h,但也欢迎包含库函数的帮助,毕竟这是一种学习体验。非常感谢!
对代码的一点解释是,我设置了 UP 和 DOWN 起始位置的坐标,然后移动光标,用空格删除它所在的前一行,然后增加 2 并输入一个新单词。我想我可以使用第二个 while 循环来检查是否按下了 ENTER 键。
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE);
COORD upPos = {20,28};
COORD downPos = {50, 0};
char endState;
while ( SOMETHING )
{
COORD upPos = {20,28};
COORD downPos = {50, 0};
while (upPos.Y >=0)
{
SetConsoleCursorPosition(screen,upPos);
cout << "UP" << endl;
upPos.Y++;
SetConsoleCursorPosition(screen,upPos);
cout << " " << endl;
upPos.Y -=2;
SetConsoleCursorPosition(screen,downPos);
cout << "DOWN" << endl;
downPos.Y--;
SetConsoleCursorPosition(screen,downPos);
cout << " " << endl;
downPos.Y+=2;
Sleep(100);
}
}
}
【问题讨论】:
-
检查
std::istream::read函数。 -
@Ostricho 欢迎来到 SO!如果您有答案,则应将其作为答案发布,而不是将其添加到您的问题中。
标签: c++ loops animation while-loop