Как определить неправильные предположения пользователя в игре hangman c # - PullRequest
0 голосов
/ 02 декабря 2019

Я работаю над игрой палача и пытаюсь выяснить, как отобразить сообщение и увеличить число на 1, если пользователь угадывает букву, которой нет в слове. Прямо сейчас, что происходит, когда пользователь угадывает букву, которой нет в слове, отображает сообщение для каждой буквы в слове и увеличивает число на единицу для каждой буквы в слове.

Я пытаюсь сделать так, чтобы, когда пользователь делает неправильное предположение, он отображал это сообщение только один раз и только увеличивал число на единицу. Вот код, который у меня есть, который определяет, когда пользователь угадает неправильно

for (int index = 0; index < charArray.Length; index++)
            {
                if (charArray[index] == userGuess && userGuess != lettersUsed[index])
                {
                    found[index] = userGuess;
                    lettersUsed[index] = userGuess;
                }
                else if (lettersUsed[index] == userGuess)
                {
                    Console.WriteLine($"{userGuess} is already in the word");
                }
                else if (charArray[index] != userGuess)
                {
                    Console.WriteLine($"{userGuess} is not in the word");
                    guesses++;
                }
            }

Любые предложения будут потрясающими!

1 Ответ

1 голос
/ 02 декабря 2019

Если буква уже в слове. Вы печатаете сообщение "x уже в слове" charArray.Length () количество раз. Используйте bool, чтобы определить, была ли найдена буква, а затем распечатайте сообщение только один раз.

class HangmanGame
{
    char[] charArray = {'h', 'a', 'n', 'g', 'm', 'a', 'n'};
    char[] found = {'*', '*', '*', '*', '*', '*', '*'};
    int guesses = 0;

    public void TestLetter(char userGuess)
    {
        bool foundLetter = false, alreadyInWord = false;
        for (int index = 0; index < charArray.Length; index++)
        {
            if(userGuess == found[index])
            {
                alreadyInWord = true;
                break;
            }
            else if(userGuess == charArray[index])
            {
                found[index] = charArray[index];
                foundLetter = true;
            }
        }
        if(alreadyInWord)
        {
            String s = "The letter " + userGuess + " was already in the word: " + new string(found) + ".";
            Console.WriteLine(s);
        }
        else if(foundLetter)
        {
            String s = "You guessed correctly: " + new string(found) + ".";
            Console.WriteLine(s);
        }
        else
        {
            guesses++;
        }
    }
}
...