Example #1
0
 public IEnumerable <Capo> GetCapos(MafiaMember underBoss)
 {
     if (underBoss == null)
     {
         return(null);
     }
     return(_underBoss.Capos);
 }
Example #2
0
        /// <summary>
        /// Returns a list of Player objects after asking the user for their name and assignming them a ROLE.
        /// </summary>
        public List <Player> getPlayerNamesAndAssignRandomRoles(int totalPlayers)
        {
            List <Player> registeredPlayers = new List <Player>();

            Random roleRandomGenerator = new Random();

            int count = 1;

            while (count <= totalPlayers)
            {
                Console.WriteLine("Name for Player " + count + ":");

                ROLE   currentRole = getRandomAvailableRole(roleRandomGenerator);
                Player p           = null;

                if (currentRole == ROLE.Civilian)
                {
                    p = new Player(Console.ReadLine(), ROLE.Civilian);
                }
                else if (currentRole == ROLE.Doctor)
                {
                    p = new Doctor(Console.ReadLine());
                }
                else if (currentRole == ROLE.Mafia)
                {
                    p = new MafiaMember(Console.ReadLine());
                }
                else if (currentRole == ROLE.Sheriff)
                {
                    p = new Sheriff(Console.ReadLine());
                }

                registeredPlayers.Add(p);
                count++;

                Prompt.postRegistrationInformation(p.name, currentRole.ToString());
            }

            return(registeredPlayers);
        }
Example #3
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!");
        }