Advertisement
NikaBang

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

Dec 9th, 2022 (edited)
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.17 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. internal class Program
  6. {
  7.     //    У нас есть список всех игроков(минимум 10). У каждого игрока есть поля: имя, уровень, сила.
  8.     //    Требуется написать запрос для определения топ 3 игроков по уровню и топ 3 игроков по силе, после чего вывести каждый топ.
  9.     //    2 запроса получится.
  10.  
  11.     static void Main(string[] args)
  12.     {
  13.         Database database = new Database();
  14.         database.RunProgram();
  15.     }
  16.  
  17.     class Player
  18.     {
  19.         public string Name { get; }
  20.         public int Level { get; }
  21.         public int Power { get; }
  22.  
  23.         public Player(string name, int level, int power)
  24.         {
  25.             Name = name;
  26.             Level = level;
  27.             Power = power;
  28.         }
  29.  
  30.         public void ShowInfo()
  31.         {
  32.             Console.WriteLine($"Имя: {Name} Уровень: {Level} Сила: {Power}");
  33.         }
  34.     }
  35.  
  36.     class Database
  37.     {
  38.         private List<Player> _players;
  39.  
  40.         public Database()
  41.         {
  42.             _players = new List<Player>();
  43.  
  44.             Fill();
  45.         }
  46.  
  47.         public void RunProgram()
  48.         {
  49.             string CommandPointOne = "1";
  50.             string CommandPointTwo = "2";
  51.             bool inProgram = true;
  52.  
  53.             while (inProgram)
  54.             {
  55.                 Console.WriteLine("Список игроков сервера.\n");
  56.                 ShowInfo();
  57.  
  58.                 Console.Write($"\nМеню:\n{CommandPointOne}. Показать ТОП игроков по Уровню." +
  59.                     $"\n{CommandPointTwo}. Показать ТОП игроков по Силе.\nДля выхода нажми любую клавишу.\nВаш выбор: ");
  60.                 string userInput = Console.ReadLine();
  61.  
  62.                 if (userInput == CommandPointOne)
  63.                 {
  64.                     ShowTopLevel();
  65.                 }
  66.                 else if (userInput == CommandPointTwo)
  67.                 {
  68.                     ShowTopPower();
  69.                 }
  70.                 else
  71.                 {
  72.                     Console.WriteLine("Программа завершена.");
  73.  
  74.                     inProgram = false;
  75.                     Console.ReadKey();
  76.                 }
  77.  
  78.                 Console.ReadKey();
  79.                 Console.Clear();
  80.             }
  81.         }
  82.  
  83.         private void ShowInfo()
  84.         {
  85.             foreach (var player in _players)
  86.             {
  87.                 player.ShowInfo();
  88.             }
  89.         }
  90.  
  91.         private void ShowTopLevel()
  92.         {
  93.             int countTopPlayers = 3;
  94.             var filterPlayers = _players.OrderByDescending(player => player.Level).Take(countTopPlayers);
  95.  
  96.             ShowFilterLinq(filterPlayers);
  97.         }
  98.  
  99.         private void ShowTopPower()
  100.         {
  101.             int countTopPlayers = 3;
  102.             var filterPlayers = _players.OrderByDescending(player => player.Power).Take(countTopPlayers);
  103.  
  104.             ShowFilterLinq(filterPlayers);
  105.         }
  106.  
  107.         private void ShowFilterLinq(IEnumerable<Player> filterPlayers)
  108.         {
  109.             foreach (var patient in filterPlayers)
  110.             {
  111.                 patient.ShowInfo();
  112.             }
  113.         }
  114.  
  115.         private void Fill()
  116.         {
  117.             Player[] player =
  118.             {
  119.                 new Player("Lol", 40, 450),
  120.                 new Player("Smit", 5, 200),
  121.                 new Player("Knyzi", 15, 400),
  122.                 new Player("Sutiner", 6, 180),
  123.                 new Player("Nagibator666", 80, 1100),
  124.                 new Player("Kek", 66, 630),
  125.                 new Player("Agranom", 54, 680),
  126.                 new Player("Master", 5, 110),
  127.                 new Player("Bob777", 28, 310),
  128.                 new Player("Player", 37, 410),
  129.                 new Player("Golum", 6, 220),
  130.                 new Player("Zadira", 10, 380),
  131.                 new Player("Batya", 4, 140)
  132.             };
  133.  
  134.             _players.AddRange(player);
  135.         }
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement