背景
我目前正在为一个基于M.E.N.A.C.E的无符号和交叉机器学习程序编写一些代码,我已经完成了实际机器学习和与计算机玩的代码,以及另一台计算机用来对它进行游戏训练的代码。用户可以输入他们希望让计算机自己训练的内容,然后输入要玩的游戏数量。
问题
我正在尝试制作一个%完成显示,它每次更新时都会覆盖自己。我遇到的问题是,由于某种原因,代码不会在while循环中打印任何应该打印的内容,而是等到结束时才一次打印全部内容。我使用'\r‘(回车)覆盖最后打印的文本。如果我删除回车,while循环会像它应该做的那样在每次迭代中打印文本。我不知道是什么导致了这个问题,因为我对C++非常陌生。
我正在用Repl.it编程,因为我无法在我正在使用的计算机上安装一个IDE。
下面是计算和显示%完成(使用命名空间std)的子例程。
void calcCompletion(int a, int b)
{
int completion = (static_cast<float>(a)/b) * 100;
cout << '\r';
cout << completion << "%";
}下面是while循环的开始,其中调用了过程(在我测试这个过程时,模式总是2)。
while(gamesPlayed < gameEnd)
{
//permutations();
if(mode != "1")
{
calcCompletion(gamesPlayed, gameEnd);
}这是一个很长的match循环,所以我不会显示全部内容(因此,为什么花括号不匹配)。
这是输出:
clang++-7 -pthread -std=c++17 -o main ai.cpp base3.cpp main.cpp otherai.cpp permutations.cpp winCheck.cpp
./main
Enter mode.
1 - Play the AI
2 - Train the AI
2
How many games would you like the AI to play?
5
Simulating...
80%
Games complete.
Games played: 5
Games won: 1
Games lost: 0
Games drawn: 4
Win Percentage: 20%
Loss Percentage: 0%
--------------它只需要等待,直到使用while循环完成,然后打印最后一个数字,而不是按执行过程打印。
我已经测试过试图覆盖我在另一段代码中没有时间延迟编写的东西,它工作得很好,所以显然被覆盖太快并不是问题所在。
发布于 2022-07-03 14:03:24
您还没有关闭while循环下(if子句)的大括号。
https://stackoverflow.com/questions/67088805
复制相似问题