2014-11-06 4 views
-2

Сейчас я делаю игру Hangman на C++. Моя текущая проблема заключается в том, что у меня есть строка, которая заменяет случайно выбранное слово из файла и заменяет его «*». К сожалению, мой код не заменяет их правильными буквами/догадками, я проверил с точками останова, что это за слово. ПОЖАЛУЙСТА, ИГНОРИРУЙТЕ ХАНГМАН, ЧЕРЕЗ ТЕПЕРЬ, ЕСЛИ У ВАС НЕ УВЕРЕНЫ, КАК ИСКЛЮЧИТЬ ЭТО В ЭТОМ ПРОГРАММЕ. Любая помощь будет оценена по достоинству. Моего текстовый файл имеет следующие слова в нем: яблоке оранжевых автомобиля грузовика велосипеда кошка собака змей рока носка синего красного цветаЗамена держателей мест буквой в Hangman C++

Моего код выглядит следующим образом:

int wordFill(char guess, string theWordSecret, string&guessWord) //function for determing if you guess a letter contained 
{ 
    int i; 
    int hits = 0; //letter hits within the word 
    int many = theWordSecret.length(); 

    for (i = 0; i < hits; i++) 
    { 
     if (guess == guessWord[i]) 
      return 0; 
     if (guess == theWordSecret[i]) 
     { 
      guessWord[i] == guess; 
      hits++; 
     } 
    } 
    return hits; 
} 
+0

Есть ли необходимость сбросить весь этот код? Минимальный пример должен точно показать, в какой части кода вы столкнулись с проблемой. –

+0

Я только сделал эту большую часть, чтобы увидеть, может быть, проблема может содержаться в другой части кода. –

+0

Я пытаюсь вам помочь. Меньше - больше. Если вы сбрасываете много ненужного кода, который может быть обеспокоен его чтением? –

ответ

1

Для начала в функции wordFill цикл for должен указывать

for (i = 0; i < many; i++) 

Вместо

for (i = 0; i < hits; i++) 

Чтобы заменить звездочки в тайне добавить следующий код, если пользователь ввел правильное письмо

for (int replace = 0; replace < mystery.length(); replace++) 
{ 
    if (theWord[replace] == letter) 
    { 
     mystery[replace] = letter; 
    } 
} 

Это должно решить все ваши проблемы (на данный момент).

+0

Где я должен это точно сказать? Мой товарищ по команде просто подумал, что многие из них вышли, когда вы опубликовали это. –

+0

Вторая часть кода, который я разместил, принадлежит вашей основной функции во втором цикле while в инструкции else. Строка 60 будет специфичной –

+0

Удивительный человек спасибо. Это очень помогло. –

1

Как Рафи отметил, что вы сравниваете i < hits, которые, конечно, эквивалентно i < 0

Также обратите внимание, что ваша строка кода:

guessWord[i] == guess;

не является назначение: это сравнение - остерегайтесь == вместо =.

+0

Спасибо за помощь y'alls. Это очень помогло. Теперь мы на один шаг ближе к завершению. –

+0

@ Эрик Джесси Хорошо. Пожалуйста, назначьте галочку Рафи для ответа на свой вопрос и дайте ему немного кредитов и поддержите любые ответы, которые действительно вам помогли. Наконец, прочитайте это полностью, прежде чем публиковать свой следующий вопрос: http://stackoverflow.com/help/dont-ask –

Смежные вопросы