В настоящее время я работаю над проектом по созданию игры Mastermind. Пользователь должен ввести 3 цвета, и программа сравнит, какие цвета правильные и в нужном месте, какие цвета правильные, но не в том месте, а какие цвета неправильные. Все в порядке, за исключением того, что я не могу правильно сравнить информацию в случайно сгенерированном массиве с массивом, заполненным пользователем. Я уверен, что мне пришлось бы использовать al oop, чтобы выполнить sh это. -Вещи, которые, как мне кажется, могут быть проблемой: * Информация в обоих массивах не сохраняется должным образом. * конфликтующие типы.
void gameS() {
int close, right, attempts = 0;
string choice[3],code; // holds user input
const int arrySize = 5;
srand(time(0)); //random numbers
string ranColor[arrySize] = { "R", "B", "W", "Y", "G" }; // possible color options
for (int i = 0; i < arrySize - 2; i++) //generat random colors
{
int rcolor = rand() % arrySize;
code = ranColor[rcolor];
cout << code << endl;
}
while (attempts < 10) {
cout << "You should input your color choices below. Your options are - R : Red, B : Blue, W : White, Y : Yellow, G : Green.\n" << "Please choose 3 for your " << attempts+1 << " attempt.\n" << "******************************************************\n\n";
cout << "\n\nPlease enter the color of the first peg: "; //user input to choice array spot : 1
cin >> choice[0];
cout << "\nPlease enter the color of the second peg: "; //user input to choice array spot : 2
cin >> choice[1];
cout << "\nPlease enter the color of the third peg: "; //user input to choice array spot : 3
cin >> choice[2];
attempts++; // proceeds to next turn/attempt
//checks for correct colors in correct places
for (int i = 0; i < 3; i++)
{
if (code == choice[i])
{
right++;
choice[i] = "X";
}
}
//Determin the number of right colors in the wrong place
for (int i = 0; i < 3; i++)
{
for (int y = 0; y < 3; y++) {
if (code[i] == choice[y]) {
close++;
choice[i] = "Y";
}
}
}
}
}
Я получаю ошибки для следующих строк:
* 'аргумент': преобразование из tim_t в беззнаковый в 'возможной потере данных
srand(time(0));
* Использование неинициализированной памяти 'right'
`if (code == choice[i])
{
right++;
choice[i] = "X";
}`
* Использование неинициализированной памяти 'close'
`for (int i = 0; i < 3; i++)
{
for (int y = 0; y < 3; y++) {
if (code == choice[y])
{
close++;
choice[i] = "Y";
}
}
}
* ни один оператор "==" не соответствует этим операндам . * Двоичный '==': o найден глобальный оператор, который принимает тип 'std :: string' (или нет приемлемого преобразования)
`for (int y = 0; y < 3; y++) {
if (code[i] == choice[y])
{
close++;
choice[i] = "Y";
}`
Любые подсказки приветствуются.