重复循环直到按下回车键

Repeating loop until enter is pressed

本文关键字:回车 循环      更新时间:2023-10-16

对于其他发现此问题的人,可以使用conio.h库中的kbhit((函数来完成。插入即可!kbhit((,我把一些东西放在那里,它会正确地循环,然而,我正在寻找一种在没有库的情况下实现这一点的方法

我是一个初学者,尝试在控制台中创建一个简单的动画。动画的单词UP在控制台的右手边向上,单词DOWN在右手边向下。到目前为止,我已经让动画完成了一次迭代,但我正在努力让它重复,看起来就像文本回到顶部或底部,然后再重复一次,直到用户按下ENTER键。

我的书(我是从课本上自学的(让人觉得,除了iostream和windows之外,没有任何特定的库是可能的。h但包括库功能的帮助也很受欢迎,毕竟这是一种学习体验。非常感谢!

对代码的一点解释是,我设置了向上和向下起始位置的坐标,然后移动光标,用空格删除它所在的前一行,然后增加两个,然后放一个新词。我想我可以用第二个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);
        }
    }
}

您最好创建一个自定义的"GetAsyncKeyState"函数,该函数将在windows和linux中使用#IFDEF来选择适当的GetAsyncKey State((或等效函数。对于前

if (GetAsyncKeyState(VK_RETURN))
    {
       exit = true;
    }