Advertisement
TeT91

ДЗ Топ игроков сервера

Jun 26th, 2024 (edited)
398
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.64 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace CSLight
  6. {
  7.     internal class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             PersonBase person = new PersonBase();
  12.             person.ShowPlayers();
  13.         }
  14.     }
  15.  
  16.     class PersonBase
  17.     {
  18.         private List<Person> _players;
  19.  
  20.         public PersonBase()
  21.         {
  22.             GeneratePlayers();
  23.         }
  24.  
  25.         public void ShowPlayers()
  26.         {
  27.             int playersCount = 3;
  28.  
  29.             Console.WriteLine($"Топ {playersCount} уровня");
  30.  
  31.             ShowList(CreateTopByLevel(playersCount));
  32.  
  33.             Console.WriteLine($"Топ {playersCount} по силе");
  34.  
  35.             ShowList(CreateTopByStrenght(playersCount));
  36.  
  37.             Console.ReadKey();
  38.         }
  39.  
  40.         private IEnumerable<Person> CreateTopByStrenght(int playersCount)
  41.         {
  42.             var sortedList = _players.OrderByDescending(player => player.Strenght).Take(playersCount);
  43.  
  44.             return sortedList;
  45.         }
  46.  
  47.         private IEnumerable<Person> CreateTopByLevel(int playersCount)
  48.         {
  49.             var sortedList = _players.OrderByDescending(player => player.Level).Take(playersCount);
  50.  
  51.             return sortedList;
  52.         }
  53.  
  54.         private void ShowList(IEnumerable<Person> list)
  55.         {
  56.             foreach (Person person in list)
  57.             {
  58.                 Console.WriteLine($"{person.Name} - {person.Level} - {person.Strenght}");
  59.             }
  60.         }
  61.  
  62.         private void GeneratePlayers()
  63.         {
  64.             PersonCreator creator = new PersonCreator();
  65.             int dataBaseCapacity = 20;
  66.  
  67.             _players = new List<Person>();
  68.  
  69.             for (int i = 0; i < dataBaseCapacity; i++)
  70.             {
  71.                 _players.Add(creator.CreatePerson());
  72.             }
  73.         }
  74.     }
  75.  
  76.     class PersonCreator
  77.     {
  78.         private List<string> _names;
  79.  
  80.  
  81.         public PersonCreator()
  82.         {
  83.             InitNames();
  84.         }
  85.  
  86.         public Person CreatePerson()
  87.         {
  88.             int maxLevel = 100;
  89.             int level = UserUtils.GenerateRandomValue(maxLevel);
  90.  
  91.             int maxStrenght = 50;
  92.             int strenght = UserUtils.GenerateRandomValue(maxStrenght);
  93.  
  94.             string name = GetRandomValue(_names);
  95.  
  96.             return new Person(name, level, strenght);
  97.         }
  98.  
  99.         private void InitNames()
  100.         {
  101.             _names = new List<string>
  102.             {
  103.                 "Максим",
  104.                 "Михаил",
  105.                 "Александр",
  106.                 "Дмитрий",
  107.                 "Денис",
  108.                 "Илья",
  109.                 "Андрей",
  110.                 "Артем",
  111.                 "Иван",
  112.                 "Алексей",
  113.                 "Никита"
  114.             };
  115.         }
  116.  
  117.         private string GetRandomValue(List<string> values)
  118.         {
  119.             int randomId = UserUtils.GenerateRandomValue(values.Count);
  120.             return values[randomId];
  121.         }
  122.     }
  123.  
  124.     class Person
  125.     {
  126.         public Person(string name, int level, int strenght)
  127.         {
  128.             Name = name;
  129.             Level = level;
  130.             Strenght = strenght;
  131.         }
  132.  
  133.         public string Name { get; private set; }
  134.  
  135.         public int Level { get; private set; }
  136.  
  137.         public int Strenght { get; private set; }
  138.     }
  139.  
  140.     static class UserUtils
  141.     {
  142.         private static Random s_random = new Random();
  143.  
  144.         public static int GenerateRandomValue(int maxValue)
  145.         {
  146.             return s_random.Next(maxValue);
  147.         }
  148.     }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement