public bool GuessLetter(SocketMessage e, char letter) { SocketTextChannel channel = (e.Channel as SocketTextChannel); Program.messageControl.SendMessage(channel, Utility.GetUserName(e.Author as SocketGuildUser) + " guessed the letter **" + letter + "**.", false); if (!letterWhitelist.Contains(letter)) { Program.messageControl.SendMessage(channel, "Error: No numbers or special characters allowed.", false); return(false); } if (!guessedLetters.Contains(letter)) { // Find all occurances of that letter in WORD, and place letter en PROGRESS whereever that was. List <int> occurances = new List <int> (); string low = word.ToLower(); for (int i = 0; i < word.Length; i++) { if (low[i] == letter) { occurances.Add(i); } } guessedLetters.Add(letter); if (occurances.Count != 0) { foreach (int i in occurances) { progress = progress.Insert(i, letter.ToString()); string firstPart = progress.Substring(0, i + 1); firstPart += progress.Substring(i + 2); progress = firstPart.ToUpper(); } Program.messageControl.SendMessage(channel, "Success! Current progress: `" + progress + "`", false); if (progress.ToLower() == word.ToLower()) { Program.messageControl.SendMessage(channel, "Well I'll be damned, it seems you are victorious!", false); currentGame = null; Utility.SetGame(null); } return(true); } else { tries++; if (tries > maxTries) { Program.messageControl.SendMessage(channel, "Bad news, you've lost the game. Also this game. Word was **" + word.ToUpper() + "**.\n" + DrawHangman(), false); currentGame = null; } else { Program.messageControl.SendMessage(channel, "Incorrect.\n" + DrawHangman(), false); } return(false); } } Program.messageControl.SendMessage(channel, "Can't do that, that letter has already been guessed.", false); return(false); }
public Task <Result> Execute(SocketUserMessage e, string word) { if (Hangman.currentGame == null) { // First of all, check if there are any hidden characters. bool anyHidden = false; foreach (char c in word) { if (Hangman.letterWhitelist.Contains(c)) { anyHidden = true; break; } } if (anyHidden) { Hangman.currentGame = new Hangman(word); return(TaskResult(Hangman.currentGame, "Succesfully started new game of Hangman! Care to take a guess? `" + Hangman.ToUnderscores(word) + "`.\n" + Hangman.currentGame.DrawHangman())); } else { return(TaskResult(null, "Failed to start a new game of Hangman - word must contain letters of the alfabet.")); } } else { return(TaskResult(Hangman.currentGame, "Failed to start new game of Hangman - a game is already in progress!")); } }