lovelyvook

Unit_39

Jul 12th, 2024 (edited)
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.51 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Ijunior
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             const string CommandAddPlayer = "1";
  11.             const string CommandShowPlayers = "2";
  12.             const string CommandBanPlayer = "3";
  13.             const string CommandUnbanPlayer = "4";
  14.             const string CommandRemovePlayer = "5";
  15.             const string CommandExit = "6";
  16.  
  17.             bool isWork = true;
  18.             Database database = new Database();
  19.  
  20.             while (isWork)
  21.             {
  22.                 Console.Write($"{CommandAddPlayer} - добавить игрока" +
  23.                     $"\n{CommandShowPlayers} - посмотреть игроков" +
  24.                     $"\n{CommandBanPlayer} - забанить игрока" +
  25.                     $"\n{CommandUnbanPlayer} - разбанить игрока" +
  26.                     $"\n{CommandRemovePlayer} - удалить игрока" +
  27.                     $"\n{CommandExit} - выйти из программы" +
  28.                     $"\nВведите номер: ");
  29.  
  30.                 switch (Console.ReadLine())
  31.                 {
  32.                     case CommandAddPlayer:
  33.                         database.AddPlayer();
  34.                         break;
  35.  
  36.                     case CommandShowPlayers:
  37.                         database.ShowPlayers();
  38.                         break;
  39.  
  40.                     case CommandBanPlayer:
  41.                         database.BanPlayer();
  42.                         break;
  43.  
  44.                     case CommandUnbanPlayer:
  45.                         database.UnbanPlayer();
  46.                         break;
  47.  
  48.                     case CommandRemovePlayer:
  49.                         database.RemovePlayer();
  50.                         break;
  51.  
  52.                     case CommandExit:
  53.                         isWork = false;
  54.                         break;
  55.  
  56.                     default:
  57.                         Console.WriteLine("Неверный ввод");
  58.                         break;
  59.                 }
  60.  
  61.                 Console.ReadKey();
  62.                 Console.Clear();
  63.             }
  64.         }
  65.     }
  66.  
  67.     class Database
  68.     {
  69.         private List<Player> _players = new List<Player>();
  70.  
  71.         public void AddPlayer()
  72.         {
  73.             Console.Write("Введите имя игрока: ");
  74.             string name = Console.ReadLine();
  75.             Console.Write("Введите уровень игрока: ");
  76.  
  77.             if (TryReadInt(Console.ReadLine(), out int level))
  78.             {
  79.                 _players.Add(new Player(name, level));
  80.             }
  81.         }
  82.  
  83.         public void ShowPlayers()
  84.         {
  85.             char separator = '-';
  86.             int separatorLength = 10;
  87.  
  88.             if (_players.Count > 0)
  89.             {
  90.                 foreach (Player player in _players)
  91.                 {
  92.                     player.ShowInfo();
  93.                     Console.WriteLine("\n" + new string(separator, separatorLength));
  94.                 }
  95.             }
  96.             else
  97.             {
  98.                 Console.WriteLine("Список пуст");
  99.             }
  100.         }
  101.  
  102.         public void BanPlayer()
  103.         {
  104.             if (TryGetPlayer(out Player player))
  105.                 player.Ban();
  106.         }
  107.  
  108.         public void UnbanPlayer()
  109.         {
  110.             if (TryGetPlayer(out Player player))
  111.                 player.Unban();
  112.         }
  113.  
  114.         public void RemovePlayer()
  115.         {
  116.             if (TryGetPlayer(out Player player))
  117.                 _players.Remove(player);
  118.         }
  119.  
  120.         private bool TryGetPlayer(out Player player)
  121.         {
  122.             player = null;
  123.             int id;
  124.  
  125.             ShowPlayers();
  126.             Console.Write("Введите ID игрока: ");
  127.  
  128.             if (TryReadInt(Console.ReadLine(), out id))
  129.             {
  130.                 foreach (Player foundPlayer in _players)
  131.                 {
  132.                     if (foundPlayer.ID == id)
  133.                     {
  134.                         player = foundPlayer;
  135.                         return true;
  136.                     }
  137.                 }
  138.             }
  139.  
  140.             Console.WriteLine("Игрока с таким ID нет");
  141.             return false;
  142.         }
  143.  
  144.         private bool TryReadInt(string userInput, out int number)
  145.         {
  146.             if (int.TryParse(userInput, out number))
  147.                 return true;
  148.             else
  149.                 Console.WriteLine("Некорректный ввод");
  150.  
  151.             return false;
  152.         }
  153.     }
  154.  
  155.     class Player
  156.     {
  157.         private static int s_id;
  158.  
  159.         private string _name;
  160.         private int _level;
  161.         private bool _isBanned;
  162.  
  163.         public Player(string name, int level)
  164.         {
  165.             ++s_id;
  166.             ID = s_id;
  167.             _name = name;
  168.             _level = level;
  169.             _isBanned = false;
  170.         }
  171.  
  172.         public int ID { get; private set; }
  173.  
  174.         public void ShowInfo()
  175.         {
  176.             Console.Write($"ID: {ID} \nИмя: {_name} \nУровень: {_level} \nНаличие бана: ");
  177.             ShowBan();
  178.         }
  179.  
  180.         private void ShowBan()
  181.         {
  182.             if (_isBanned)
  183.                 Console.Write("забанен");
  184.             else
  185.                 Console.Write("не забанен");
  186.         }
  187.  
  188.         public void Ban()
  189.         {
  190.             _isBanned = true;
  191.         }
  192.  
  193.         public void Unban()
  194.         {
  195.             _isBanned = false;
  196.         }
  197.     }
  198. }
Advertisement
Add Comment
Please, Sign In to add comment