在我的函数中,我添加了一个if语句来保持用户输入正确的坐标,如果第一个if语句为false,则会导致无限循环。如果第一个if语句是正确的而第二个if语句是假的,那么它的工作完全正常。
void Sheep::sheepProcess(BoardSet& board)
{
char middle;
cout << "Your move? ";
cin >> x1 >> y1 >> middle >> x2 >> y2;
if (correctInput(x1, y1, x2, y2))
{
convertCoordinates(x1, y1, x2, y2); //x=z and y=w
if(board.legalMoveForSheep(z1, w1, z2, w2))
{
board.adjustBoardForSheep(z1, w1, z2, w2);
}
else
{
cout << "Illegal Move, Try again" << endl;
sheepProcess(board);
}
}
else
{
cout << "Illegal input, Try again" << endl;
sheepProcess(board);
}
}
如果您需要更多代码,例如bools。让我知道
编辑:
class Sheep {
public:
void sheepProcess(BoardSet& board);
void convertCoordinates(char x1, int y1, char x2, int y2);
void initalizedItems();
private:
char x1, x2;
int y1, y2, z1, z2, w1, w2;
};
答案 0 :(得分:0)
你没有吃cin
上准备好的输入。下一次阅读是获得相同的输入也失败,重复令人作呕。
解决方案:当您检测到输入已经准备就绪无效时,请将其吃掉。扔掉,向用户抱怨提供错误输入并允许他重试。