vovanhik_24

54

Aug 10th, 2025 (edited)
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Leaderboard
  6. {
  7.     public class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             PlayerService service = new PlayerService();
  12.             service.Run();
  13.         }
  14.     }
  15.  
  16.     public enum SortType
  17.     {
  18.         ByLevel,
  19.         ByStrength
  20.     }
  21.  
  22.     public class Player
  23.     {
  24.         public Player(string name, int level, int strength)
  25.         {
  26.             Name = name;
  27.             Level = level;
  28.             Strength = strength;
  29.         }
  30.  
  31.         public string Name { get; private set; }
  32.         public int Level { get; private set; }
  33.         public int Strength { get; private set; }
  34.     }
  35.  
  36.     public class PlayerCreator
  37.     {
  38.         public List<Player> CreatePlayers()
  39.         {
  40.             return new List<Player>
  41.             {
  42.                 new Player("Артём", 15, 120),
  43.                 new Player("Владимир", 20, 110),
  44.                 new Player("Екатерина", 18, 130),
  45.                 new Player("Сергей", 22, 125),
  46.                 new Player("Мария", 17, 140),
  47.                 new Player("Дмитрий", 19, 135),
  48.                 new Player("Ольга", 16, 100),
  49.                 new Player("Иван", 21, 150),
  50.                 new Player("Алексей", 14, 90),
  51.                 new Player("Наталья", 23, 145),
  52.             };
  53.         }
  54.     }
  55.  
  56.     public class PlayerService
  57.     {
  58.         private const int TopPlayersCount = 3;
  59.         private readonly List<Player> _players;
  60.  
  61.         public PlayerService()
  62.         {
  63.             PlayerCreator creator = new PlayerCreator();
  64.             _players = creator.CreatePlayers();
  65.         }
  66.  
  67.         public void Run()
  68.         {
  69.             const string CommandToShowTopPlayersByLevel = "1";
  70.             const string CommandToShowTopPlayersByStrength = "2";
  71.             const string CommandToExit = "3";
  72.  
  73.             bool isWorking = true;
  74.  
  75.             while (isWorking)
  76.             {
  77.                 Console.Clear();
  78.                 Console.WriteLine("Меню:");
  79.                 Console.WriteLine($"{CommandToShowTopPlayersByLevel}. Топ-{TopPlayersCount} игроков по уровню");
  80.                 Console.WriteLine($"{CommandToShowTopPlayersByStrength}. Топ-{TopPlayersCount} игроков по силе");
  81.                 Console.WriteLine($"{CommandToExit}. Выход");
  82.                 Console.Write("Выберите пункт меню: ");
  83.  
  84.                 string userInput = Console.ReadLine();
  85.  
  86.                 switch (userInput)
  87.                 {
  88.                     case CommandToShowTopPlayersByLevel:
  89.                         ShowTopPlayers(SortType.ByLevel);
  90.                         break;
  91.  
  92.                     case CommandToShowTopPlayersByStrength:
  93.                         ShowTopPlayers(SortType.ByStrength);
  94.                         break;
  95.  
  96.                     case CommandToExit:
  97.                         isWorking = false;
  98.                         break;
  99.  
  100.                     default:
  101.                         Console.WriteLine("Некорректный ввод. Попробуйте снова.");
  102.                         break;
  103.                 }
  104.  
  105.                 if (isWorking)
  106.                 {
  107.                     Pause();
  108.                 }
  109.             }
  110.         }
  111.  
  112.         private void ShowTopPlayers(SortType sortType)
  113.         {
  114.             List<Player> topPlayers;
  115.  
  116.             if (sortType == SortType.ByLevel)
  117.             {
  118.                 Console.WriteLine($"\nТоп-{TopPlayersCount} игроков по уровню:");
  119.                 topPlayers = _players.OrderByDescending(player => player.Level).Take(TopPlayersCount).ToList();
  120.             }
  121.             else
  122.             {
  123.                 Console.WriteLine($"\nТоп-{TopPlayersCount} игроков по силе:");
  124.                 topPlayers = _players.OrderByDescending(player => player.Strength).Take(TopPlayersCount).ToList();
  125.             }
  126.  
  127.             PrintPlayers(topPlayers);
  128.         }
  129.  
  130.         private void PrintPlayers(List<Player> players)
  131.         {
  132.             if (players.Count == 0)
  133.             {
  134.                 Console.WriteLine("Список пуст.");
  135.             }
  136.             else
  137.             {
  138.                 foreach (Player player in players)
  139.                 {
  140.                     Console.WriteLine($"{player.Name}, уровень: {player.Level}, сила: {player.Strength}");
  141.                 }
  142.             }
  143.         }
  144.  
  145.         private void Pause()
  146.         {
  147.             Console.WriteLine("\nНажмите любую клавишу для продолжения...");
  148.             Console.ReadKey();
  149.         }
  150.     }
  151. }
Advertisement
Add Comment
Please, Sign In to add comment