Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            List <IRobber> rolodex = new List <IRobber>();

            var MrPink = new Hacker()
            {
                Name          = "Mr. Pink",
                SkillLevel    = 50,
                PercentageCut = 33
            };
            var MrBlue = new Hacker()
            {
                Name          = "Mr. Blue",
                SkillLevel    = 40,
                PercentageCut = 20
            };
            var MrWhite = new LockSpecialist()
            {
                Name          = "Mr. White",
                SkillLevel    = 55,
                PercentageCut = 40
            };
            var MrRed = new LockSpecialist()
            {
                Name          = "Mr. Red",
                SkillLevel    = 75,
                PercentageCut = 10
            };
            var MrGreen = new Muscle()
            {
                Name          = "Mr. Green",
                SkillLevel    = 33,
                PercentageCut = 10
            };
            var MrYellow = new Muscle()
            {
                Name          = "Mr. Brownlee",
                SkillLevel    = 100,
                PercentageCut = 99
            };

            rolodex.Add(MrBlue);
            rolodex.Add(MrGreen);
            rolodex.Add(MrPink);
            rolodex.Add(MrWhite);
            rolodex.Add(MrYellow);
            rolodex.Add(MrRed);

            Console.WriteLine($"\nThere are {rolodex.Count} robbers in your rolodex");
            Console.WriteLine("It's time to add robbers to the rolodex.");

            bool teamNameBlank = false;

            while (teamNameBlank == false)
            {
                Console.WriteLine("\nPlease enter the new robber's name:");
                string robberName = Console.ReadLine();
                if (string.IsNullOrEmpty(robberName))
                {
                    teamNameBlank = true;
                    break;
                }
                string robberSpeciality = "";
                while ((robberSpeciality != "Hacker") && (robberSpeciality != "Muscle") && (robberSpeciality != "Lock Specialist"))
                {
                    Console.WriteLine("\nPlease enter the new robber's speciality:");
                    Console.WriteLine("Hacker (Disables alarms)");
                    Console.WriteLine("Muscle (Disarms guards)");
                    Console.WriteLine("Lock Specialist (cracks vault)");
                    robberSpeciality = Console.ReadLine();
                    if (robberSpeciality != "Hacker" && robberSpeciality != "Muscle" && robberSpeciality != "Lock Specialist")
                    {
                        Console.WriteLine("\nYou've entered an invalid answer. Please select a valid speciality('Hacker', 'Muscle', 'Lock Specialist').\n");
                    }
                }
                int robberSkillLevel = 0;
                while (robberSkillLevel >= 0 && robberSkillLevel <= 100)
                {
                    Console.WriteLine("\nPlease enter the new robber's skill level as a number between 0 and 100:");
                    string skillLevelEntry = Console.ReadLine();
                    try
                    {
                        int skillLevelParsed = int.Parse(skillLevelEntry);
                        if (skillLevelParsed <= 0 || skillLevelParsed >= 100)
                        {
                            Console.WriteLine("\nThe robber's skill level must be between 0 and 100.\n");
                        }
                        else
                        {
                            robberSkillLevel = skillLevelParsed;
                            break;
                        }
                    }
                    catch (FormatException ex)
                    {
                        Console.WriteLine("\nYou have entered an invalid skill level. Please enter an integer between 0 and 100.\n");
                    }
                }
                int robberPercentageCut = 0;
                while (robberPercentageCut <= 0 || robberPercentageCut >= 100)
                {
                    Console.WriteLine("\nPlease enter the new robber's cut of the take as a number between 0 and 100:");
                    var percentageCutEntry = Console.ReadLine();
                    try
                    {
                        int percentageCutParsed = int.Parse(percentageCutEntry);
                        Console.WriteLine("The try for skill level executed");
                        if (percentageCutParsed <= 0 && percentageCutParsed >= 100)
                        {
                            Console.WriteLine("The robber's cut must be between 0 and 100.\n");
                        }
                        else
                        {
                            robberPercentageCut = percentageCutParsed;
                            Console.WriteLine($"robberPercentageCut = {robberPercentageCut}");
                        }
                    }
                    catch
                    {
                        Console.WriteLine("You have entered an invalid percentage cut. Please enter an integer between 0 and 100.\n");
                    }
                }
                if (robberSpeciality == "Hacker")
                {
                    var hacker = new Hacker()
                    {
                        Name          = robberName,
                        SkillLevel    = robberSkillLevel,
                        PercentageCut = robberPercentageCut
                    };
                    rolodex.Add(hacker);
                }
                else if (robberSpeciality == "Muscle")
                {
                    var muscle = new Muscle()
                    {
                        Name          = robberName,
                        SkillLevel    = robberSkillLevel,
                        PercentageCut = robberPercentageCut
                    };
                    rolodex.Add(muscle);
                }
                else if (robberSpeciality == "Lock Specialist")
                {
                    var lockpick = new LockSpecialist()
                    {
                        Name          = robberName,
                        SkillLevel    = robberSkillLevel,
                        PercentageCut = robberPercentageCut
                    };
                    rolodex.Add(lockpick);
                }
                Console.WriteLine($"\n\nThere are {rolodex.Count} robbers in your rolodex\n");
            }

            Random rand               = new Random();
            int    alarmScore         = rand.Next(0, 101);
            int    vaultScore         = rand.Next(0, 101);
            int    securityGuardScore = rand.Next(0, 101);
            int    cashOnHand         = rand.Next(50000, 1000001);

            Dictionary <string, int> systems = new Dictionary <string, int>();

            systems.Add("Alarm", alarmScore);
            systems.Add("Vault", vaultScore);
            systems.Add("Security Guards", securityGuardScore);


            var sortedSystems = systems.OrderBy(kvp => kvp.Value);

            var leastSecure = sortedSystems.First();
            var mostSecure  = sortedSystems.Last();

            Console.WriteLine("Recon Report");
            Console.WriteLine("---------------------");
            Console.WriteLine($"Most Secure: {mostSecure.Key} {mostSecure.Value}");
            Console.WriteLine($"Least Secure: {leastSecure.Key} {leastSecure.Value}");
            var bank = new Bank()
            {
                AlarmScore         = alarmScore,
                VaultScore         = vaultScore,
                SecurityGuardScore = securityGuardScore,
                CashOnHand         = cashOnHand
            };

            Console.WriteLine("Bank's alarm score: " + bank.AlarmScore);
            Console.WriteLine("Bank's vault score: " + bank.VaultScore);
            Console.WriteLine("Bank's security guard score: " + bank.SecurityGuardScore);
            Console.WriteLine("Bank's cash on hand: $" + bank.CashOnHand + "\n");

            List <IRobber> crew = new List <IRobber>();

            bool crewIndexBlank = false;

            Console.WriteLine("\nIt's time to build your crew!");

            double percentageTotal = 100;

            while (crewIndexBlank == false)
            {
                Console.WriteLine("Here are the robbers you can add to your crew:");
                Console.WriteLine("----------------------------------------------");
                foreach (var robber in rolodex)
                {
                    double robberCut           = robber.PercentageCut;
                    double percentageRemainder = percentageTotal - robberCut;
                    if (!crew.Contains(robber))
                    {
                        if (percentageRemainder > 0)
                        {
                            Console.Write($"{robber.Name}");
                            Console.Write($" - [{rolodex.IndexOf(robber)}]");
                            if (robber.GetType() == typeof(Hacker))
                            {
                                Console.WriteLine("\n*Hacker");
                            }
                            else if (robber.GetType() == typeof(Muscle))
                            {
                                Console.WriteLine("\n*Muscle");
                            }
                            else if (robber.GetType() == typeof(LockSpecialist))
                            {
                                Console.WriteLine("\n*Lock Specialist");
                            }
                            Console.WriteLine($"*Skill level: {robber.SkillLevel}");
                            Console.WriteLine($"*Percentage cut: {robber.PercentageCut}\n");
                        }
                    }
                }
                Console.WriteLine($"\nCut remaining: {percentageTotal}");
                Console.WriteLine("Add a robber to your crew by entering their number:");
                string enteredIndex = Console.ReadLine();
                if (enteredIndex.Length > 0)
                {
                    try
                    {
                        int robberIndex = int.Parse(enteredIndex);

                        if (robberIndex >= 0 && robberIndex <= rolodex.Count)
                        {
                            var    chosenRobber    = rolodex[robberIndex];
                            double chosenRobberCut = chosenRobber.PercentageCut;
                            if ((percentageTotal - chosenRobberCut) < 0)
                            {
                                Console.WriteLine("\nTheir cut is too high. Pick someone else.\n");
                            }
                            else
                            {
                                if (!crew.Contains(chosenRobber))
                                {
                                    crew.Add(chosenRobber);
                                    percentageTotal -= chosenRobber.PercentageCut;
                                }
                                else
                                {
                                    Console.WriteLine("That robber is already on your crew.\n");
                                }
                            }
                        }
                        else if (robberIndex < 0 || robberIndex > 100)
                        {
                            Console.WriteLine("Please enter a valid index.");
                        }
                    }
                    catch
                    {
                        Console.WriteLine("Invalid input. Please enter a valid index in the rolodex.\n");
                    }
                }
                else
                {
                    if (crew.Count <= 0)
                    {
                        Console.WriteLine("Your crew is empty! Add robbers to it\n");
                    }
                    else
                    {
                        break;
                    }
                }
            }

            foreach (var member in crew)
            {
                member.PerformSkill(bank);
            }

            if (bank.IsSecure)
            {
                Console.WriteLine("Your crew blew it! Enjoy the slammer!");
            }
            else
            {
                double teamTake = 0;
                foreach (var member in crew)
                {
                    double memberTake = (member.PercentageCut / 100) * bank.CashOnHand;
                    Console.WriteLine($"{member.Name}'s cut: " + String.Format("{0:00.0}", memberTake));
                    teamTake += memberTake;
                }
                double yourTake = bank.CashOnHand - teamTake;
                Console.WriteLine($"Your final take: " + String.Format("{0:00.0}", yourTake));
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            List <IRobber> rolodex = new List <IRobber>();

            Hacker neo = new Hacker()
            {
                Name = "Neo", SkillLevel = 50, PercentageCut = 33
            };
            Hacker trinity = new Hacker()
            {
                Name = "Trinity", SkillLevel = 60, PercentageCut = 35
            };
            Muscle therock = new Muscle()
            {
                Name = "The Rock", SkillLevel = 40, PercentageCut = 30
            };
            Muscle arnold = new Muscle()
            {
                Name = "Arnold", SkillLevel = 30, PercentageCut = 25
            };
            LockSpecialist jason = new LockSpecialist()
            {
                Name = "Jason", SkillLevel = 45, PercentageCut = 32
            };
            LockSpecialist brad = new LockSpecialist()
            {
                Name = "Brad", SkillLevel = 35, PercentageCut = 28
            };

            rolodex.Add(neo);
            rolodex.Add(trinity);
            rolodex.Add(therock);
            rolodex.Add(arnold);
            rolodex.Add(jason);
            rolodex.Add(brad);

            Console.WriteLine($"Operatives in Rolodex: {rolodex.Count()}");
            Console.WriteLine("Enter new operative name>");
            string newName = Console.ReadLine();

            while (newName != "")
            {
                Console.WriteLine("Choose operative speciality:");
                Console.WriteLine("1: Hacker (Disables alarms)");
                Console.WriteLine("2: Muscle (Disarms guards");
                Console.WriteLine("3: Lock Specialist (Cracks vault)");
                Console.WriteLine("Enter Speciality Number (1-3)>");
                string newSpeciality = Console.ReadLine();
                Console.WriteLine("Enter Skill Level (1-100)>");
                string newSkillLevel = Console.ReadLine();
                Console.WriteLine("Enter percentage cut (1-100)>");
                string newPercentageCut = Console.ReadLine();


                if (int.Parse(newSpeciality) == 1)
                {
                    Hacker newOperative = new Hacker()
                    {
                        Name          = newName,
                        SkillLevel    = int.Parse(newSkillLevel),
                        PercentageCut = int.Parse(newPercentageCut)
                    };
                    rolodex.Add(newOperative);
                }
                else if (int.Parse(newSpeciality) == 2)
                {
                    Muscle newOperative = new Muscle()
                    {
                        Name          = newName,
                        SkillLevel    = int.Parse(newSkillLevel),
                        PercentageCut = int.Parse(newPercentageCut)
                    };
                    rolodex.Add(newOperative);
                }
                else
                {
                    LockSpecialist newOperative = new LockSpecialist()
                    {
                        Name          = newName,
                        SkillLevel    = int.Parse(newSkillLevel),
                        PercentageCut = int.Parse(newPercentageCut)
                    };
                    rolodex.Add(newOperative);
                }

                Console.WriteLine("Enter new operative name>");
                newName = Console.ReadLine();
            }

            Random generator  = new Random();
            int    alarmValue = generator.Next(0, 101);
            int    vaultValue = generator.Next(0, 101);
            int    guardValue = generator.Next(0, 101);
            int    cashValue  = generator.Next(50_000, 1_000_001);

            Bank gothamCentral = new Bank()
            {
                AlarmScore         = alarmValue,
                VaultScore         = vaultValue,
                SecurityGuardScore = guardValue,
                CashOnHand         = cashValue
            };

            List <int> systems = new List <int>();

            systems.Add(gothamCentral.AlarmScore);
            systems.Add(gothamCentral.VaultScore);
            systems.Add(gothamCentral.SecurityGuardScore);

            Console.WriteLine("Recon Report");
            Console.WriteLine("-------------");
            Console.WriteLine($"Most Secure: {systems.Max()}");
            Console.WriteLine($"Least Secure: {systems.Min()}");

            Console.WriteLine("Rolodex Report");
            Console.WriteLine("--------------");
            foreach (var operative in rolodex)
            {
                Console.WriteLine($"Name: {operative.Name}");
                Console.WriteLine($"Specialty: {operative.Speciality}");
                Console.WriteLine($"Skill Level: {operative.SkillLevel}");
                Console.WriteLine($"Cut of Take: {operative.PercentageCut}%");
                Console.WriteLine("--------------");
            }
        }