yanchevilian

Guild (C# Advanced Exam - 22 February 2020)

Aug 23rd, 2021 (edited)
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.37 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Guild
  7. {
  8.     public class StartUp
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.             Guild guild = new Guild("Weekend Raiders", 20);
  13.             Player player = new Player("Mark", "Rogue");
  14.             Console.WriteLine(player);
  15.             guild.AddPlayer(player);
  16.             Console.WriteLine(guild.Count);
  17.             Console.WriteLine(guild.RemovePlayer("Gosho"));
  18.             Player firstPlayer = new Player("Pep", "Warrior");
  19.             Player secondPlayer = new Player("Lizzy", "Priest");
  20.             Player thirdPlayer = new Player("Mike", "Rogue");
  21.             Player fourthPlayer = new Player("Marlin", "Mage");
  22.             secondPlayer.Description = "Best healer EU";
  23.             guild.AddPlayer(firstPlayer);
  24.             guild.AddPlayer(secondPlayer);
  25.             guild.AddPlayer(thirdPlayer);
  26.             guild.AddPlayer(fourthPlayer);
  27.             guild.PromotePlayer("Lizzy");
  28.             Console.WriteLine(guild.RemovePlayer("Pep"));
  29.             Player[] kickedPlayers = guild.KickPlayersByClass("Rogue");
  30.             Console.WriteLine(string.Join(", ", kickedPlayers.Select(p => p.Name)));
  31.             Console.WriteLine(guild.Report());
  32.         }
  33.     }
  34.     class Player
  35.     {
  36.         public Player(string name, string classText)
  37.         {
  38.             this.Name = name;
  39.             this.Class = classText;
  40.         }
  41.         public string Name { get; set; }
  42.         public string Class { get; set; }
  43.         public string Rank { get; set; } = "Trial";
  44.         public string Description { get; set; } = "n/a";
  45.  
  46.         public override string ToString()
  47.         {
  48.             StringBuilder sb = new StringBuilder();
  49.             sb.AppendLine($"Player {this.Name}: {this.Class}");
  50.             sb.AppendLine($"Rank: {Rank}");
  51.             sb.AppendLine($"Description: {Description}");
  52.  
  53.             return sb.ToString().TrimEnd();
  54.         }
  55.     }
  56.     class Guild
  57.     {
  58.         private List<Player> roster;
  59.  
  60.         public string Name { get; set; }
  61.         public int Capacity { get; set; }
  62.  
  63.         public Guild(string name, int capacity)
  64.         {
  65.             this.Name = name;
  66.             this.Capacity = capacity;
  67.             this.roster = new List<Player>();
  68.         }
  69.         public void AddPlayer(Player player)
  70.         {
  71.             if (roster.Count < this.Capacity && roster.All(x => x.Name != player.Name))
  72.             {
  73.                 roster.Add(player);
  74.             }
  75.         }
  76.         public int Count
  77.         {
  78.             get { return this.roster.Count; }
  79.         }
  80.  
  81.         public bool RemovePlayer(string name)
  82.         {
  83.             if (roster.Any(x => x.Name == name))
  84.             {
  85.                 Player playerToRemove = roster.Find(x => x.Name == name);
  86.                 roster.Remove(playerToRemove);
  87.                 return true;
  88.             }
  89.             return false;
  90.         }
  91.         public void PromotePlayer(string foundedName)
  92.         {
  93.             if (roster.Any(x => x.Name == foundedName))
  94.             {
  95.                 Player myPromotedPlayer = roster.FirstOrDefault(x => x.Name == foundedName);
  96.                 myPromotedPlayer.Rank = "Member";
  97.             }
  98.         }
  99.         public void DemotePlayer(string name)
  100.         {
  101.             if (roster.Any(x => x.Name == name))
  102.             {
  103.                 Player myDemotedPlayer = roster.FirstOrDefault(x => x.Name == name);
  104.                 if (myDemotedPlayer != null)
  105.                 {
  106.                     myDemotedPlayer.Rank = "Trial";
  107.                 }
  108.             }
  109.         }
  110.         public Player[] KickPlayersByClass(string class_)
  111.         {
  112.             var playersToRemove = roster.Where(x => x.Class == class_).ToArray();
  113.             roster.RemoveAll(x => x.Class == class_);
  114.  
  115.             return playersToRemove;
  116.         }
  117.  
  118.         public string Report()
  119.         {
  120.             StringBuilder sb = new StringBuilder();
  121.             sb.AppendLine($"Players in the guild: {this.Name}");
  122.             foreach (Player player in this.roster)
  123.             {
  124.                 sb.AppendLine($"Player {player.Name}: {player.Class}");
  125.                 sb.AppendLine($"Rank: {player.Rank}");
  126.                 sb.AppendLine($"Description: {player.Description}");
  127.             }
  128.             return sb.ToString().TrimEnd();
  129.         }
  130.     }
  131. }
  132.  
Add Comment
Please, Sign In to add comment