Example #1
0
        /// <summary>
        /// Проверить введенное польвателем слова с головоломной
        /// </summary>
        /// <param name="word">Проверяемое слово</param>
        /// <param name="puzzle">Ссылка на объект головоломки</param>
        public void CheckAnswer(string word, Puzzle puzzle)
        {
            // Проверяем что слово не пустое, что такого слова еще нет и в нем содержится не менее 4-х букв
            if (String.IsNullOrEmpty(word) || foundWords.Contains(word) || word.Length < 4)
                return;

            // Переводим слово в верхний регистр -- строка upperCaseWord должна быть уничтожена,
            // и поэтому нам нужна копия. Мы удаляем каждую найденную букву, пока в слове не останется букв.
            // Если буквы останутся, то слово считается не верным
            string upperCaseWord = word.ToUpper();
            if (words.Contains(upperCaseWord))
            {
                // Проверяем, что слово состоит из букв головоломки
                foreach (char letter in puzzle.Letters)
                {
                    // Удаляем букву, если она содержится в головоломке
                    if (upperCaseWord.Contains(letter))
                    {
                        // Если слово начинается с буквы, иначе Substring(0, index - 1) выдаст исключение
                        if (upperCaseWord.StartsWith(letter.ToString()))
                            upperCaseWord = upperCaseWord.Substring(1);
                        else
                        {
                            int index = upperCaseWord.IndexOf(letter);
                            upperCaseWord = upperCaseWord.Substring(0, index - 1) + upperCaseWord.Substring(index + 1);
                        }
                    }
                }
            }

            // Если из слова удалены все буквы, то считается что слово найдено.
            // Издаем звуковой сигнал и добавляем слово в список найденных.
            if (String.IsNullOrEmpty(upperCaseWord))
            {
                Console.Beep();
                foundWords.Add(word);
            }
        }
Example #2
0
 /// <summary>
 /// Конструктор класса Game
 /// </summary>
 /// <param name="puzzleLength">Количество букв в головоломке</param>
 /// <param name="vowelEvery">Добавлять гласную каждую n-ю букву</param>
 /// <param name="validWords">Список проверочных слов</param>
 public Game(int puzzleLength, int vowelEvery, IEnumerable<string> validWords)
 {
     this.wordChecker = new WordChecker(validWords);
     this.puzzle = new Puzzle(puzzleLength, vowelEvery);
     CurrentInput = String.Empty;
 }