Example #1
0
    public static void Gameplay()
    {
        Console.WriteLine("Welcome to Hangman!");
        Hangman hangman     = new Hangman(-1);
        string  underscores = string.Join(" ", hangman.ActiveGuesses);

        Console.WriteLine(underscores);
        while (!hangman.isComplete)
        {
            Console.WriteLine("Guess a letter:");
            string input = Console.ReadLine();
            Console.WriteLine(hangman.TryALetter(input));
        }
        Console.WriteLine("You guessed it! The word is " + hangman.ChosenWord + "!");
        Console.WriteLine("Play again? (Y/N)");
        string response = Console.ReadLine();

        if (response[0].ToString().ToUpper() == "Y")
        {
            Gameplay();
        }
        else
        {
            Console.WriteLine("Thanks for playing!");
        }
    }
Example #2
0
        public void Play_returns_solution_length()
        {
            var hangman        = new Hangman(_solution, 1);
            var serverSolution = hangman.Play();

            Assert.That(serverSolution.Length, Is.EqualTo(_solution.Length));
        }
Example #3
0
    public void Player_joins_after_other_players_quit()
    {
        var scheduler = new TestScheduler();
        var player2   = scheduler.CreateObserver <HangmanState>();
        var hangman   = new Hangman("a");

        var player1      = hangman.StateObservable;
        var subscription = Ready(player1);

        scheduler.Schedule(TimeSpan.FromTicks(100), () => hangman.GuessObserver.OnNext('a'));
        scheduler.Schedule(TimeSpan.FromTicks(300), () =>
        {
            hangman.StateObservable.Subscribe(player2);
        });
        scheduler.Schedule(TimeSpan.FromTicks(200), () => subscription.Dispose());

        var expected = new[]
        {
            OnCompleted <HangmanState>(300)
        };

        // +--a-|
        // +a-|
        // .....+|
        scheduler.Start();

        ReactiveAssert.AreElementsEqual(expected, player2.Messages);
    }
Example #4
0
 private void CreateView(Hangman hangmanObject)
 {
     Console.WriteLine(_renderHangman.SwitchAndDisplayHangmanImage(hangmanObject.GuessesLeft));
     Console.WriteLine("Word to guess: {0}",
                       _displayWord.RenderWordView(hangmanObject.LettersInWordSplit));
     Console.WriteLine("Already guessed: {0}", string.Join(", ", hangmanObject.AlreadyGuessedLetters));
 }
Example #5
0
        public ActionResult Guess()
        {
            char    newGuess   = Char.Parse(Request.Form["guess"]); //get user character guess
            Hangman newHangman = new Hangman();

            return(View("Index", newHangman.Match(newGuess)));
        }
Example #6
0
    void Start()
    {
        currentScene = SceneManager.GetActiveScene().name;
        //background = gameObject.GetComponent<>();
        if (currentScene.Equals("Level1.2"))
        {
            cont = 1;
        }
        if (currentScene.Equals("Level2.2"))
        {
            cont = 2;
        }
        if (currentScene.Equals("Level3.2"))
        {
            cont = 3;
        }

        hangman = new Hangman(cont);

        word     = GameObject.FindWithTag("Word").GetComponent <TextMeshProUGUI>();
        letters  = GameObject.FindWithTag("Letters").GetComponent <TextMeshProUGUI>();
        lives    = GameObject.FindWithTag("Lives").GetComponent <TextMeshProUGUI>();
        attempts = GameObject.FindWithTag("Attempts").GetComponent <TextMeshProUGUI>();

        word.text     = hangman.convertWord();
        lives.text    = hangman.Lives.ToString();
        attempts.text = hangman.Attempts.ToString();
        letters.text  = "";
    }
Example #7
0
        public ActionResult Lose()
        {
            string word = hangman.Word;

            hangman = new Hangman();
            return(View(word));
        }
Example #8
0
        public void SetupAndStartNewGame()
        {
            Console.WriteLine(_renderBanner.CreateBannerForGame());

            // Load the Dictionary
            var wordList = _fileReader.LoadDictionary().ToList();

            // Select and print random word
            var randomWord = _randomWordSelector.SelectRandomWordFromDictionary(wordList);

            Console.WriteLine("Lets play Hangman!");

            // Assemble the Hangman Object
            var hangmanObject = new Hangman
            {
                WordToGuess        = randomWord,
                LettersInWordSplit = _assembleGuessedLetters.AssembleTheGuessedLetters(randomWord)
            };

            Console.WriteLine("Word to guess: {0}", _displayWord.RenderWordView(hangmanObject.LettersInWordSplit));

            // Perform Hangman Logic
            _mainGame.Run(hangmanObject);

            Console.Clear();

            // Results Screen
            _resultsScreen.RunResults(hangmanObject);

            PlayAgainQuestion();
        }
Example #9
0
        public void Play_replaces_solution_with_hidden_chars()
        {
            var hangman        = new Hangman(_solution, 1);
            var serverSolution = hangman.Play();

            Assert.That(serverSolution, Is.EqualTo("_______"));
        }
Example #10
0
        // THIS FUNCTION HANDLES THE CREATION OF THE HUNG MAN'S BODY... //
        private void DrawHangmanParts(Hangman h)
        {
            Graphics g = pnlHangman.CreateGraphics();
            Pen      p = new Pen(Color.Blue, 2);

            switch (h)
            {
            case Hangman.Head:
                //draw a circle, use pen then x, y then width and height...
                g.DrawEllipse(p, 320, 120, 60, 60);
                break;

            case Hangman.Body:
                g.DrawLine(p, new Point(350, 180), new Point(350, 300));
                break;

            case Hangman.Left_Arm:
                g.DrawLine(p, new Point(350, 210), new Point(280, 150));
                break;

            case Hangman.Right_Arm:
                g.DrawLine(p, new Point(350, 210), new Point(420, 150));
                break;

            case Hangman.Left_Leg:
                g.DrawLine(p, new Point(350, 300), new Point(300, 400));
                break;

            case Hangman.Right_Leg:
                g.DrawLine(p, new Point(350, 300), new Point(400, 400));
                break;
            }
        }
Example #11
0
        public void CapitalLetterAreFound()
        {
            var sut = new Hangman("dDBb");

            Assert.That(sut.Guess('d'), Is.EqualTo("dD--"));
            Assert.That(sut.Guess('b'), Is.EqualTo("dDBb"));
        }
Example #12
0
        public void WrongGuessAfterCtor()
        {
            var sut = new Hangman("Developer");

            Assert.That(sut.Guess('x'), Is.EqualTo("---------"));
            Assert.That(sut.Result, Is.EqualTo("---------"));
        }
            private async Task PerformHangmanGame(TermType type)
            {
                using var hm = new Hangman(type);

                if (HangmanGames.TryAdd(Context.Channel.Id, hm))
                {
                    Task _client_MessageReceived(SocketMessage msg)
                    {
                        var _ = Task.Run(() => Context.Channel.Id == msg.Channel.Id ? hm.Input(msg.Author.Id, msg.Author.ToString(), msg.Content) : Task.CompletedTask);

                        return(Task.CompletedTask);
                    }

                    hm.OnGameEnded          += Hm_OnGameEnded;
                    hm.OnGuessFailed        += Hm_OnGuessFailed;
                    hm.OnGuessSucceeded     += Hm_OnGuessSucceeded;
                    hm.OnLetterAlreadyUsed  += Hm_OnLetterAlreadyUsed;
                    _client.MessageReceived += _client_MessageReceived;

                    try {
                        await Context.Channel.SendConfirmAsync($"{hm.ScrambledWordCode}\n{hm.GetHangman()}", $"{GetText("hangman_game_started")} ({hm.TermType})").ConfigureAwait(false);
                    } catch { }

                    await hm.EndedTask.ConfigureAwait(false);

                    _client.MessageReceived -= _client_MessageReceived;
                    HangmanGames.TryRemove(Context.Channel.Id, out var _);
                }
                else
                {
                    await ReplyErrorLocalized("hangman_running").ConfigureAwait(false);
                }
            }
Example #14
0
        public void guessIsValidLetter()
        {
            Hangman game       = new Hangman();
            char    testString = 'r';

            Assert.True(game.ValidLetterGuess(testString));
        }
Example #15
0
    public void NewWord()
    {
        if (Array2 != null)
        {
            foreach (var a in Array2)
            {
                Destroy(a);
            }
        }

        word     = GetWord();
        instance = this;
        Array    = new GameObject[word.Text.Length];
        Array2   = new GameObject[word.Text.Length];
        for (int i = 0; i < word.Text.Length; i++)
        {
            Array2[i] = Instantiate(letterBox, canvas.transform);
            Array2[i].GetComponentInChildren <Text>().text = word.Text[i].ToString();
            Array2[i].transform.parent = firstLetterBoxPosition;
            //Array2[i].transform.position = firstLetterBoxPosition.position + Vector3.right * distance * i;
            Array[i] = Array2[i].GetComponentInChildren <Text>().gameObject;
            Array[i].SetActive(false);
        }

        letters     = new List <string>();
        WinCounter  = word.Text.Length;
        LoseCounter = 11;
        input.SetActive(false);
    }
Example #16
0
    public void Getting_all_the_letters_right_makes_for_a_win()
    {
        var scheduler = new TestScheduler();

        IObservable <HangmanState> Create()
        {
            var hangman = new Hangman("hello");

            scheduler.Schedule(TimeSpan.FromTicks(100), () => hangman.GuessObserver.OnNext('b'));
            scheduler.Schedule(TimeSpan.FromTicks(200), () => hangman.GuessObserver.OnNext('e'));
            scheduler.Schedule(TimeSpan.FromTicks(300), () => hangman.GuessObserver.OnNext('l'));
            scheduler.Schedule(TimeSpan.FromTicks(400), () => hangman.GuessObserver.OnNext('o'));
            scheduler.Schedule(TimeSpan.FromTicks(500), () => hangman.GuessObserver.OnNext('h'));
            return(hangman.StateObservable);
        }

        var expected = new[]
        {
            OnNext <HangmanState>(100, hangmanState => hangmanState.RemainingGuesses == 9 && hangmanState.MaskedWord == "_____"),
            OnNext <HangmanState>(200, hangmanState => hangmanState.RemainingGuesses == 8 && hangmanState.MaskedWord == "_____"),
            OnNext <HangmanState>(300, hangmanState => hangmanState.RemainingGuesses == 8 && hangmanState.MaskedWord == "_e___"),
            OnNext <HangmanState>(400, hangmanState => hangmanState.RemainingGuesses == 8 && hangmanState.MaskedWord == "_ell_"),
            OnNext <HangmanState>(500, hangmanState => hangmanState.RemainingGuesses == 8 && hangmanState.MaskedWord == "_ello"),
            OnCompleted <HangmanState>(600)
        };

        // +--b-e-l-o-h->
        // +a-b-c-d-e-|
        ITestableObserver <HangmanState> testableObserver = scheduler.Start(Create, 100, 100, 3000);

        ReactiveAssert.AreElementsEqual(expected, testableObserver.Messages);
    }
Example #17
0
        public void game_should_be_lost()
        {
            var game = new Hangman("BELL", 3);

            Assert.AreEqual("Status:GameIsOn;Word:----;Guesses:;Guesses left:3", game.ToString());

            var result = game.Guess("X");

            Assert.AreEqual("IncorrectGuess", result.ToString());
            Assert.AreEqual("Status:GameIsOn;Word:----;Guesses:X;Guesses left:2", game.ToString());

            result = game.Guess("#");
            Assert.AreEqual("InvalidGuess", result.ToString());
            Assert.AreEqual("Status:GameIsOn;Word:----;Guesses:X;Guesses left:2", game.ToString());

            result = game.Guess("BB");
            Assert.AreEqual("InvalidGuess", result.ToString());
            Assert.AreEqual("Status:GameIsOn;Word:----;Guesses:X;Guesses left:2", game.ToString());

            result = game.Guess("L");
            Assert.AreEqual("CorrectGuess", result.ToString());
            Assert.AreEqual("Status:GameIsOn;Word:--LL;Guesses:X L;Guesses left:2", game.ToString());

            result = game.Guess("Y");
            Assert.AreEqual("IncorrectGuess", result.ToString());
            Assert.AreEqual("Status:GameIsOn;Word:--LL;Guesses:X L Y;Guesses left:1", game.ToString());

            result = game.Guess("Z");
            Assert.AreEqual("IncorrectGuess", result.ToString());
            Assert.AreEqual("Status:GameLost;Word:--LL;Guesses:X L Y Z;Guesses left:0", game.ToString());

            Assert.ThrowsException <InvalidOperationException>(() => game.Guess("B"));
        }
Example #18
0
    public void Guessing_a_correct_letter_twice_counts_as_a_failure()
    {
        var scheduler = new TestScheduler();

        IObservable <HangmanState> Create()
        {
            var hangman = new Hangman("foobar");

            scheduler.Schedule(TimeSpan.FromTicks(100), () => hangman.GuessObserver.OnNext('b'));
            scheduler.Schedule(TimeSpan.FromTicks(200), () => hangman.GuessObserver.OnNext('b'));
            return(hangman.StateObservable);
        }

        var expected = new[]
        {
            OnNext <HangmanState>(100, hangmanState => hangmanState.RemainingGuesses == 9 && hangmanState.MaskedWord == "______"),
            OnNext <HangmanState>(200, hangmanState => hangmanState.RemainingGuesses == 9 && hangmanState.MaskedWord == "___b__"),
            OnNext <HangmanState>(300, hangmanState => hangmanState.RemainingGuesses == 8 && hangmanState.MaskedWord == "___b__")
        };

        // +--b-b->
        // +a-b-c->
        ITestableObserver <HangmanState> testableObserver = scheduler.Start(Create, 100, 100, 3000);

        ReactiveAssert.AreElementsEqual(expected, testableObserver.Messages);
    }
Example #19
0
        public void TryALetter_ChooseWord_Underscores()
        {
            Hangman aardvark = new Hangman(0);

            char[] underscores = { '_', '_', '_', '_', '_', '_', '_', '_' };
            Assert.AreEqual(underscores.ToString(), aardvark.ActiveGuesses.ToString());
        }
Example #20
0
            Task Hm_OnGameEnded(Hangman game, string winner)
            {
                if (winner == null)
                {
                    var loseEmbed = new EmbedBuilder().WithTitle($"Hangman Game ({game.TermType}) - Ended")
                                    .WithDescription(Format.Bold("You lose."))
                                    .AddField(efb => efb.WithName("It was").WithValue(game.Term.Word.ToTitleCase()))
                                    .WithFooter(efb => efb.WithText(string.Join(" ", game.PreviousGuesses)))
                                    .WithErrorColor();

                    if (Uri.IsWellFormedUriString(game.Term.ImageUrl, UriKind.Absolute))
                    {
                        loseEmbed.WithImageUrl(game.Term.ImageUrl);
                    }

                    return(Context.Channel.EmbedAsync(loseEmbed));
                }

                var winEmbed = new EmbedBuilder().WithTitle($"Hangman Game ({game.TermType}) - Ended")
                               .WithDescription(Format.Bold($"{winner} Won."))
                               .AddField(efb => efb.WithName("It was").WithValue(game.Term.Word.ToTitleCase()))
                               .WithFooter(efb => efb.WithText(string.Join(" ", game.PreviousGuesses)))
                               .WithOkColor();

                if (Uri.IsWellFormedUriString(game.Term.ImageUrl, UriKind.Absolute))
                {
                    winEmbed.WithImageUrl(game.Term.ImageUrl);
                }

                return(Context.Channel.EmbedAsync(winEmbed));
            }
Example #21
0
        public void selectWord()
        {
            Hangman game = new Hangman();

            //game.newWord();
            Assert.NotNull(game.word);
        }
Example #22
0
    public void Multiple_players_see_the_same_game_already_started()
    {
        var scheduler = new TestScheduler();
        var player2   = scheduler.CreateObserver <HangmanState>();
        var player3   = scheduler.CreateObserver <HangmanState>();
        var hangman   = new Hangman("hello");

        var player1 = hangman.StateObservable;

        Ready(player1);

        scheduler.Schedule(TimeSpan.FromTicks(100), () => hangman.GuessObserver.OnNext('e'));
        scheduler.Schedule(TimeSpan.FromTicks(200), () => hangman.GuessObserver.OnNext('l'));
        scheduler.Schedule(TimeSpan.FromTicks(150), () =>
        {
            hangman.StateObservable.Subscribe(player2);
            hangman.StateObservable.Subscribe(player3);
        });

        var expected = new[]
        {
            OnNext <HangmanState>(150, hangmanState => hangmanState.RemainingGuesses == 9 && hangmanState.MaskedWord == "_e___"),
            OnNext <HangmanState>(200, hangmanState => hangmanState.RemainingGuesses == 9 && hangmanState.MaskedWord == "_ell_"),
        };

        // +--e--l->
        // +a-b--c->
        // ...+b-c->
        // ...+b-c->
        scheduler.Start();

        ReactiveAssert.AreElementsEqual(expected, player2.Messages);
        ReactiveAssert.AreElementsEqual(expected, player3.Messages);
    }
Example #23
0
        public void calling_constructor_with_invalid_numberOfGuesses_should_set_GuessesLeft_to_10()
        {
            var h      = new Hangman("Sommar", 0);
            int result = h.GuessesLeft;

            Assert.AreEqual(10, result);
        }
Example #24
0
        public void MyTestMethod3()
        {
            var h = new Hangman("UTEPILS");

            GuessResult result = h.Guess('#');

            Assert.AreEqual(GuessResult.InvalidGuess, result);
        }
Example #25
0
        public void Hangman_EnterWord_Blank()
        {
            Hangman game = new Hangman();

            bool isSuccessful = game.EnterWord("");

            Assert.AreEqual(false, isSuccessful, "The EnterWord method has failed");
        }
Example #26
0
        public void Hangman_FoundWord_Empty()
        {
            Hangman game = new Hangman();

            bool hasFoundWord = game.FoundWord();

            Assert.AreEqual(false, hasFoundWord, "The FoundWord method failed.");
        }
Example #27
0
        public void HangmanTest3()
        {
            Hangman hangman = new Hangman("ababab");

            Assert.AreEqual("a _ a _ a _", hangman.Guess('a'));
            Assert.AreEqual("a _ a _ a _ # c", hangman.Guess('c'));
            Assert.AreEqual("You found the word! (ababab)", hangman.Guess('b'));
        }
Example #28
0
        public void MyTestMethod()
        {
            var h = new Hangman("UTEPILS");

            GuessResult result = h.Guess('E');

            Assert.AreEqual(GuessResult.CorrectGuess, result);
        }
Example #29
0
 public Hangman Put(int id, [FromBody] Hangman hangman)
 {
     if (ModelState.IsValid)
     {
         return(db.GetOneByIdAndUpdate(id, hangman));
     }
     return(null);
 }
Example #30
0
        public void Hangman_GuessLetter_Positive()
        {
            Hangman game = new Hangman();

            game.EnterWord("All");
            bool isFound = game.GuessLetter("a");

            Assert.AreEqual(true, isFound, "The guess is correct.");
        }