【发布时间】:2018-05-16 14:44:33
【问题描述】:
我正在尝试用 C++ 构建 Bulls & Cows 游戏。我已经实现了大部分逻辑。游戏使用无限循环连续运行,并在每次运行时生成一个随机值。
我现在要做的是接受用户输入并在输入有效的情况下运行代码(只能是 4 位整数)。这是我的实现:
#include ...
using namespace std;
vector<int> getDigits(int modelValue) {
vector<int> vectorValue;
int extractedDigit = 0;
int modulant = 10000;
int divisor = 1000;
for (int i = 0; i < 4; i++) {
extractedDigit = (modelValue % modulant) / divisor;
vectorValue.push_back(extractedDigit);
modulant /= 10;
divisor /= 10;
}return vectorValue;
}
int main() {
for (;;) {
int model = rand() % 9000 + 1000;
int guess = 0000;
int bulls = 0;
int cows = 0;
int counter = 1;
cout << "This is the random 4-digit integer: " << model << endl;
cout << "Enter a value to guess: ";
cin >> guess;
if ((guess >= 1000) && (guess <= 9999) && (cin)) {
vector<int> modelVector = getDigits(model);
vector<int> guessVector = getDigits(guess);
for (int i = 0; i < 4; i++) {
if (find(modelVector.begin(), modelVector.end(), guessVector[i]) != modelVector.end()) {
if (modelVector[i] == guessVector[i]) { bulls += 1; }
else { cows += 1; }
}
}cout << "There are " << bulls << " bulls and " << cows << " cows" << endl;
}
else {
cout << "Please enter a valid 4-digit integer between 0000 and 9999" << endl;
cin.clear();
}
}return 0;
}
【问题讨论】:
-
你不会在任何地方跳出循环......
-
你能澄清“持续运行的控制台”吗?是至少显示错误消息并要求更多输入,还是只是挂起?您尝试过哪些输入?
-
@LukeRamsden 我想做的是给
cout一个错误信息,以防出现奇怪的输入并重新开始。 @布兰登麦肯齐。控制台只是连续运行。如果你愿意的话,它基本上是“挂起”的。 -
我刚刚发布了同样问题的答案here(在其他答案被接受或赞成之前,不能将其标记为重复)
-
@OnurOzbek:不错的提议,但我懒得做 :-)
标签: c++