Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Leaderboard
- {
- public class Program
- {
- static void Main(string[] args)
- {
- PlayerService service = new PlayerService();
- service.Run();
- }
- }
- public enum SortType
- {
- ByLevel,
- ByStrength
- }
- public class Player
- {
- public Player(string name, int level, int strength)
- {
- Name = name;
- Level = level;
- Strength = strength;
- }
- public string Name { get; private set; }
- public int Level { get; private set; }
- public int Strength { get; private set; }
- }
- public class PlayerCreator
- {
- public List<Player> CreatePlayers()
- {
- return new List<Player>
- {
- new Player("Артём", 15, 120),
- new Player("Владимир", 20, 110),
- new Player("Екатерина", 18, 130),
- new Player("Сергей", 22, 125),
- new Player("Мария", 17, 140),
- new Player("Дмитрий", 19, 135),
- new Player("Ольга", 16, 100),
- new Player("Иван", 21, 150),
- new Player("Алексей", 14, 90),
- new Player("Наталья", 23, 145),
- };
- }
- }
- public class PlayerService
- {
- private const int TopPlayersCount = 3;
- private readonly List<Player> _players;
- public PlayerService()
- {
- PlayerCreator creator = new PlayerCreator();
- _players = creator.CreatePlayers();
- }
- public void Run()
- {
- const string CommandToShowTopPlayersByLevel = "1";
- const string CommandToShowTopPlayersByStrength = "2";
- const string CommandToExit = "3";
- bool isWorking = true;
- while (isWorking)
- {
- Console.Clear();
- Console.WriteLine("Меню:");
- Console.WriteLine($"{CommandToShowTopPlayersByLevel}. Топ-{TopPlayersCount} игроков по уровню");
- Console.WriteLine($"{CommandToShowTopPlayersByStrength}. Топ-{TopPlayersCount} игроков по силе");
- Console.WriteLine($"{CommandToExit}. Выход");
- Console.Write("Выберите пункт меню: ");
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case CommandToShowTopPlayersByLevel:
- ShowTopPlayers(SortType.ByLevel);
- break;
- case CommandToShowTopPlayersByStrength:
- ShowTopPlayers(SortType.ByStrength);
- break;
- case CommandToExit:
- isWorking = false;
- break;
- default:
- Console.WriteLine("Некорректный ввод. Попробуйте снова.");
- break;
- }
- if (isWorking)
- {
- Pause();
- }
- }
- }
- private void ShowTopPlayers(SortType sortType)
- {
- List<Player> topPlayers;
- if (sortType == SortType.ByLevel)
- {
- Console.WriteLine($"\nТоп-{TopPlayersCount} игроков по уровню:");
- topPlayers = _players.OrderByDescending(player => player.Level).Take(TopPlayersCount).ToList();
- }
- else
- {
- Console.WriteLine($"\nТоп-{TopPlayersCount} игроков по силе:");
- topPlayers = _players.OrderByDescending(player => player.Strength).Take(TopPlayersCount).ToList();
- }
- PrintPlayers(topPlayers);
- }
- private void PrintPlayers(List<Player> players)
- {
- if (players.Count == 0)
- {
- Console.WriteLine("Список пуст.");
- }
- else
- {
- foreach (Player player in players)
- {
- Console.WriteLine($"{player.Name}, уровень: {player.Level}, сила: {player.Strength}");
- }
- }
- }
- private void Pause()
- {
- Console.WriteLine("\nНажмите любую клавишу для продолжения...");
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment