これは私がこれまでに持っているものです
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <cmath>
using namespace std;
string userGuess;
string code;
char colorPegs[6] = {'R', 'B', 'Y', 'G', 'O', 'P'};
int blackPeg = 0;
int whitePeg = 0;
int userGuessArray[6] = {0, 0, 0, 0, 0, 0};
int codeArray[6] = {0, 0, 0, 0, 0, 0};
bool attemptsDone = false;
int attemptCount = 0;
int main()
{
srand(time(0));
cout << "Please wait while the computer generates the code..." << endl;
cout << "..." << endl;
sleep(2);
for(int i = 0; i < 4; i++)
{
sleep(1);
int random = (rand() % 6) ;
code[i] = colorPegs[random];
cout << "Generating code number " << i << endl;
cout << code[i] << endl;
}
cout << "Done generating the code!" << endl;
sleep(1);
cout << "..." << endl;
cout << "Colors are: R, B, Y, G, O, P. Enter 4 colors in your guess. (e.g RBYG)" << endl;
while (attemptsDone == false)
{
attemptCount++;
cout << "Please enter your guess: ";
getline(cin,userGuess);
// R B Y G O P
// 0 0 0 0 0 0
for(int x = 0; x < 4; x++)
{
if (code[x] == 'R') {
codeArray[0]++;
} else if (code[x] == 'B') {
codeArray[1]++;
} else if (code[x] == 'Y') {
codeArray[2]++;
} else if (code[x] == 'G') {
codeArray[3]++;
} else if (code[x] == 'O') {
codeArray[4]++;
} else if (code[x] == 'P') {
codeArray[5]++;
}
}
for(int z = 0; z < 6; z++)
{
if (userGuess[z] == 'R') {
userGuessArray[0]++;
} else if (userGuess[z] == 'B') {
userGuessArray[1]++;
} else if (userGuess[z] == 'Y') {
userGuessArray[2]++;
} else if (userGuess[z] == 'G') {
userGuessArray[3]++;
} else if (userGuess[z] == 'O') {
userGuessArray[4]++;
} else if (userGuess[z] == 'P') {
userGuessArray[5]++;
}
}
for(int b = 0; b < 6; b++)
{
whitePeg += min(userGuessArray[b], codeArray[b]);
}
if (userGuess.length() > 4)
{
cout << "Invalid amount of colors in your guess!" << endl;
}
else if (userGuess.length() < 4)
{
cout << "Invalid amount of colors in your guess!" << endl;
}
else if (attemptCount > 9)
{
cout << "You are out of guesses! You lose!" << endl;
return 0;
}
else if (userGuess.length() == 4)
{
for (int o = 0; o < 4; o++)
{
if(userGuess[o] == code[o])
{
blackPeg++;
}
}
}
cout << "Your white pegs were " << whitePeg << ", your black pegs were " << blackPeg << endl;
whitePeg = 0;
blackPeg = 0;
}
cout << "You win! Congrats! " << endl;
}
これを実行すると、blackPeg の値は 0 にリセットされますが、whitePeg の値はリセットされず、加算され続けます。一番下で両方をリセットしようとしましたが、while ループの一番上でそれらをリセットしようとしました。何をしても、blackPeg は 0 に戻りますが、whitePeg は加算し続けますか?
ところで、while ループを終了する方法を追加していないことに気付いたかもしれませんが、後で勝ったかどうかを確認するチェックを追加します..白いペグがリセットされない理由を理解した後