Example #1
0
        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);
        }
Example #2
0
            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!"));
                }
            }