public IEnumerable <Capo> GetCapos(MafiaMember underBoss) { if (underBoss == null) { return(null); } return(_underBoss.Capos); }
/// <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); }
/// <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!"); }