Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Guild
- {
- public class StartUp
- {
- public static void Main(string[] args)
- {
- Guild guild = new Guild("Weekend Raiders", 20);
- Player player = new Player("Mark", "Rogue");
- Console.WriteLine(player);
- guild.AddPlayer(player);
- Console.WriteLine(guild.Count);
- Console.WriteLine(guild.RemovePlayer("Gosho"));
- Player firstPlayer = new Player("Pep", "Warrior");
- Player secondPlayer = new Player("Lizzy", "Priest");
- Player thirdPlayer = new Player("Mike", "Rogue");
- Player fourthPlayer = new Player("Marlin", "Mage");
- secondPlayer.Description = "Best healer EU";
- guild.AddPlayer(firstPlayer);
- guild.AddPlayer(secondPlayer);
- guild.AddPlayer(thirdPlayer);
- guild.AddPlayer(fourthPlayer);
- guild.PromotePlayer("Lizzy");
- Console.WriteLine(guild.RemovePlayer("Pep"));
- Player[] kickedPlayers = guild.KickPlayersByClass("Rogue");
- Console.WriteLine(string.Join(", ", kickedPlayers.Select(p => p.Name)));
- Console.WriteLine(guild.Report());
- }
- }
- class Player
- {
- public Player(string name, string classText)
- {
- this.Name = name;
- this.Class = classText;
- }
- public string Name { get; set; }
- public string Class { get; set; }
- public string Rank { get; set; } = "Trial";
- public string Description { get; set; } = "n/a";
- public override string ToString()
- {
- StringBuilder sb = new StringBuilder();
- sb.AppendLine($"Player {this.Name}: {this.Class}");
- sb.AppendLine($"Rank: {Rank}");
- sb.AppendLine($"Description: {Description}");
- return sb.ToString().TrimEnd();
- }
- }
- class Guild
- {
- private List<Player> roster;
- public string Name { get; set; }
- public int Capacity { get; set; }
- public Guild(string name, int capacity)
- {
- this.Name = name;
- this.Capacity = capacity;
- this.roster = new List<Player>();
- }
- public void AddPlayer(Player player)
- {
- if (roster.Count < this.Capacity && roster.All(x => x.Name != player.Name))
- {
- roster.Add(player);
- }
- }
- public int Count
- {
- get { return this.roster.Count; }
- }
- public bool RemovePlayer(string name)
- {
- if (roster.Any(x => x.Name == name))
- {
- Player playerToRemove = roster.Find(x => x.Name == name);
- roster.Remove(playerToRemove);
- return true;
- }
- return false;
- }
- public void PromotePlayer(string foundedName)
- {
- if (roster.Any(x => x.Name == foundedName))
- {
- Player myPromotedPlayer = roster.FirstOrDefault(x => x.Name == foundedName);
- myPromotedPlayer.Rank = "Member";
- }
- }
- public void DemotePlayer(string name)
- {
- if (roster.Any(x => x.Name == name))
- {
- Player myDemotedPlayer = roster.FirstOrDefault(x => x.Name == name);
- if (myDemotedPlayer != null)
- {
- myDemotedPlayer.Rank = "Trial";
- }
- }
- }
- public Player[] KickPlayersByClass(string class_)
- {
- var playersToRemove = roster.Where(x => x.Class == class_).ToArray();
- roster.RemoveAll(x => x.Class == class_);
- return playersToRemove;
- }
- public string Report()
- {
- StringBuilder sb = new StringBuilder();
- sb.AppendLine($"Players in the guild: {this.Name}");
- foreach (Player player in this.roster)
- {
- sb.AppendLine($"Player {player.Name}: {player.Class}");
- sb.AppendLine($"Rank: {player.Rank}");
- sb.AppendLine($"Description: {player.Description}");
- }
- return sb.ToString().TrimEnd();
- }
- }
- }
Add Comment
Please, Sign In to add comment