public void ListWordsOnlyWithHints(WordsOperator wordsOperator, List <string> guessedLetters) { Console.WriteLine(wordsOperator.CollectedWordsFromCrossword.Count + " words"); Console.WriteLine(); var counter = 0; var revealedCharacters = string.Empty; var lastIndexOfguessedLetters = guessedLetters.Count - 1; bool switcher = true; var listOfUpdatedWords = new List <string>(); foreach (var word in wordsOperator.CollectedWordsFromCrossword) { if (counter == 0 || counter == 1) { revealedCharacters = Regex.Replace(word, wordsOperator.RevealGuessedLetters(guessedLetters), GlobalConstants.SpecificSymbolToReplaceNull); counter++; Console.WriteLine(1 + " " + word.Count() + " letters" + " " + revealedCharacters); } else { revealedCharacters = Regex.Replace(word, wordsOperator.RevealGuessedLetters(guessedLetters), GlobalConstants.SpecificSymbolToReplaceNull); Console.WriteLine(counter.ToString() + " " + word.Count() + " letters" + " " + revealedCharacters); counter++; } listOfUpdatedWords.Add(revealedCharacters); } if (!listOfUpdatedWords.Any(x => x.Contains(guessedLetters[lastIndexOfguessedLetters]))) { Counter.CounterOfWrongAnswers(); } }
public CrosswordGenerator(string[,] crossword, WordsOperator wordsOperator) { this.crossword = crossword; this.wordsOperator = wordsOperator; this.listOfAllWords = wordsOperator.ListOfAllWords; this.randomGenerator = new RandomGenerator(); this.arrayOperator = new ArrayOperator(); this.wordVerificator = new WordsVerificator(); this.painter = new Painter(); this.matrixWriter = new MatrixWriter(wordsOperator); this.crosswordSolver = new CrosswordSolver(); }
static void Main() { IWords englishDictionary = new EnglishWordsDictionary(); var wordsOperator = new WordsOperator(englishDictionary); var randomGenerator = new RandomGenerator(); var painter = new Painter(); var listOfAllWords = wordsOperator.ListOfAllWords; painter.ChooseAGame(); var gameOfChoice = int.Parse(Console.ReadLine()); while (gameOfChoice != 1 || gameOfChoice != 2) { if (gameOfChoice == 1) { string[,] crossword = new string[GlobalConstants.MatrixSize, GlobalConstants.MatrixSize]; var crosswordGenerator = new CrosswordGenerator(crossword, wordsOperator); crosswordGenerator.GenerateFrame(); painter.PaintMatrix(crossword, 0, 0); crosswordGenerator.GenerateCrossword(); break; } else if (gameOfChoice == 2) { var wordsExplorerFieldGenerator = new WordsExplorerFieldGenerator(); var validWordsCounter = new ValidWordsCounter(); var wordsExplorerSolver = new WordsExplorerSolver(); var wordsExplorerField = wordsExplorerFieldGenerator.GenerateField(englishDictionary.GetAplphabet); var listOfExistingWords = validWordsCounter.GetListWithDecodedWords(wordsExplorerField, listOfAllWords); painter.PaintWordsExplorer(wordsExplorerField); painter.GuessingAWordVisualizer(listOfExistingWords); var guessedWords = Console.ReadLine(); wordsExplorerSolver.GuessAWord(wordsExplorerField, listOfExistingWords, guessedWords); break; } else { Console.Clear(); painter.ChooseAGame(); gameOfChoice = int.Parse(Console.ReadLine()); } } }
public void ListAllTheWords(WordsOperator wordsOperator) { Console.WriteLine(wordsOperator.CollectedWordsFromCrossword.Count + " words"); Console.WriteLine(); var counter = 0; foreach (var word in wordsOperator.CollectedWordsFromCrossword) { if (counter == 0 || counter == 1) { counter++; Console.WriteLine(1 + " " + word.ToString()); } else { Console.WriteLine(counter.ToString() + " " + word.ToString()); counter++; } } }
public bool ShowEndScreen(WordsOperator wordsOperator, List <string> guessedLetters) { var containsSymbol = true; var revealedCharacters = string.Empty; var revealedWords = new List <string>(); foreach (var word in wordsOperator.CollectedWordsFromCrossword) { revealedCharacters = Regex.Replace(word, wordsOperator.RevealGuessedLetters(guessedLetters), GlobalConstants.SpecificSymbolToReplaceNull); revealedWords.Add(revealedCharacters); } foreach (var word in revealedWords) { if (word.Contains(GlobalConstants.SpecificSymbolToReplaceNull)) { return(!containsSymbol); } } if (containsSymbol) { var score = (wordsOperator.CollectedWordsFromCrossword.Count * 1000) / Counter.ReturnWrongAnswers(); Console.Clear(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.Write(" You've managed to solve {0} words with {1} wrong guesses!", wordsOperator.CollectedWordsFromCrossword.Count, Counter.ReturnWrongAnswers()); Console.WriteLine(); Console.WriteLine(" Your score is: {0}", score); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); } return(containsSymbol); }
public void SolveCrossword(string[,] crossword, WordsOperator wordsOperator) { var justAnElement = "@"; var guessedLetters = new List <string>() { justAnElement }; painter.ListWordsOnlyWithHints(wordsOperator, guessedLetters); Console.WriteLine("Suggest Letter or Press ESC to exit: Wrong guesses: 0"); var escapeButton = "\u001b"; while (true) { var guessedLetter = Console.ReadKey() .KeyChar .ToString().ToLower(); if (guessedLetter == escapeButton) { painter.ExitScreen(); break; } guessedLetters.Add(guessedLetter); Console.Clear(); painter.RevealLetter(crossword, guessedLetters); painter.ListWordsOnlyWithHints(wordsOperator, guessedLetters); Console.Write("Suggest Letter or Press ESC to exit: Wrong guesses: {0}", Counter.ReturnWrongAnswers()); Console.WriteLine(); if (painter.ShowEndScreen(wordsOperator, guessedLetters)) { break; } } }
public MatrixWriter(WordsOperator wordsCounter) { this.wordsCounter = wordsCounter; }