Exemplo n.º 1
0
        /// <summary>
        /// Provides the core game loop functionality of the game and changes the state of the game based on input from user.
        /// </summary>
        public void runGameSequence()
        {
            ROLE   winner         = ROLE.None;
            string playerToMurder = "";
            string playerToHeal   = "";
            string playerToAccuse = "";

            //ROLE returned by roleHasWon() will remain ROLE.None until a role has been designated a winner.
            while (roleHasWon() == ROLE.None)
            {
                Prompt.goToSleepAndMafiaChooseVictim(out playerToMurder, this);
                while (!isValidPlayerAlive(playerToMurder))
                {
                    Prompt.invalidPlayerToKill(out playerToMurder);
                }
                Prompt.doctorSelectSomoneToHeal(numberOfDoctor, this, out playerToHeal);
                Prompt.sherrifSelectSomeoneToAccuse(numberOfSheriff, this, out playerToAccuse);

                Prompt.postNightSummary(playerToMurder, playerToHeal, playerToAccuse);

                //Doctor did not heal player that was murdered.
                if (playerToMurder != playerToHeal)
                {
                    Player murdered = getAlivePlayerByName(playerToMurder);
                    MafiaMember.kill(murdered, this);
                    if (murdered.role == ROLE.Mafia)
                    {
                        numberOfMafia--;
                    }
                    else if (murdered.role == ROLE.Doctor)
                    {
                        numberOfDoctor--;
                    }
                    else if (murdered.role == ROLE.Sheriff)
                    {
                        numberOfSheriff--;
                    }
                    else if (murdered.role == ROLE.Civilian)
                    {
                        numberOfCivilian--;
                    }
                }

                string playerToHang = "";

                Prompt.civiliansChooseSomeoneToHang(this, out playerToHang);

                Player hung = getAlivePlayerByName(playerToHang);

                if (hung.role == ROLE.Mafia)
                {
                    numberOfMafia--;
                }
                else if (hung.role == ROLE.Doctor)
                {
                    numberOfDoctor--;
                }
                else if (hung.role == ROLE.Sheriff)
                {
                    numberOfSheriff--;
                }
                else if (hung.role == ROLE.Civilian)
                {
                    numberOfCivilian--;
                }

                playersAlive.Remove(getAlivePlayerByName(playerToHang));

                winner = roleHasWon();

                playerToMurder = "";
                playerToHeal   = "";
                playerToAccuse = "";
            }

            Console.WriteLine(winner.ToString() + " wins!");
        }