私はC++を初めて使用しており、割り当てに問題があります。私は、二重の白いペグを数えながら、私が抱えている問題を理解することはできません。誰かが助けてくれますか?私は "または"声明だけを使用しているので私は二重カウントの問題があることを理解することができますが、私は白いペグから黒いペグを差し引く必要があると信じています。C++ Mastermind Double White Peg Issue
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
char colors[4];
srand(time(0));
int randomint = (rand() % 5) + 1;
for (int i = 0;i<4;i++) {
randomint = (rand() % 5) + 1;
switch (randomint) {
case 1:
colors[i] = 'R';
break;
case 2:
colors[i] = 'B';
break;
case 3:
colors[i] = 'Y';
break;
case 4:
colors[i] = 'P';
break;
case 5:
colors[i] = 'G';
break;
case 6:
colors[i] = 'Bl';
break;
case 7:
colors[i] = 'R';
break;
case 8:
colors[i] = 'O';
break;
case 9:
colors[i] = 'T';
break;
}
}
char usercolors[4];
cout << "We have our colors!" << endl;
cout << endl << endl;
int turncounter = 0;
while (turncounter != 12) {
turncounter++;
cout << "Current try: " << turncounter << endl;
for (int i = 0;i<4;i++) {
cout << "Color " << i << ": ";
cin >> usercolors[i];
cout << endl;
}
for (int i = 0;i<4;i++) {
if (usercolors[i] == colors[i])
cout << "Black Peg" << " ";
}
if (usercolors[0] == colors[1] ||
usercolors[0] == colors[2] ||
usercolors[0] == colors[3]) {
cout << "White Peg" << " ";
}
if (usercolors[1] == colors[0] ||
usercolors[1] == colors[2] ||
usercolors[1] == colors[3]) {
cout << "White Peg" << " ";
}
if (usercolors[2] == colors[0] ||
usercolors[2] == colors[1] ||
usercolors[2] == colors[3]) {
cout << "White Peg" << " ";
}
if (usercolors[3] == colors[0] ||
usercolors[3] == colors[1] ||
usercolors[3] == colors[2])
{
cout << "White Peg" << " ";
}
cout << endl << endl;
if (usercolors[0] == colors[0] &&
usercolors[1] == colors[1] &&
usercolors[2] == colors[2] &&
usercolors[3] == colors[3])
{
cout << "You win! Number of tries: " << turncounter << endl;
turncounter = 12;
}
else {
cout << "Try Again!" << endl << endl;
}
}
if (turncounter == 12) {
cout << "Sorry, you are incorrect!" << endl;
cout << "Answer: ";
cout << "Color 1: " << colors[0] << "\t" << "Color 2: " << colors[1] << "\t" << "Color 3: " << colors[2] << "\t" << "Color 4: " << colors[3] << "\t" << endl;
}
cin.get();
cin.get();
return 0;
}
'(RAND()5%)+ 1 '生じることはありません6、7、8または9 – rustyx
これは色[I] = 'BLは' 動作してはなりません。色はcharで、二重引用符で囲んだ2文字です。代わりに大文字のBと小文字のbを使用しますか?黒と青のために。または、列挙型を使用します。 – Rob
デバッガを使用してステップスルーし、最初に何が起こるかを観察します。 – John