Advertisement
VodVas

База данных игроков

Oct 9th, 2023 (edited)
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.64 KB | Software | 0 0
  1. using System.Runtime.CompilerServices;
  2.  
  3. namespace База_данных_игроков
  4. {
  5.     internal class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             const string MenuAddPlayer = "1";
  10.             const string MenuDeletePlayer = "2";
  11.             const string MenuBanPlayer = "3";
  12.             const string MenuUnbanPlayer = "4";
  13.             const string MenuShowAllPlayers = "5";
  14.             const string MenuExit = "6";
  15.  
  16.             bool isRun = true;
  17.  
  18.             Database database = new Database();
  19.  
  20.             while (isRun)
  21.             {
  22.                 Console.WriteLine($"\nМеню базы данных игроков:\n{MenuAddPlayer}: Добавить игрока\n" +
  23.                     $"{MenuDeletePlayer}: Удалить игрока\n{MenuBanPlayer}: Забанить игрока\n" +
  24.                     $"{MenuUnbanPlayer}: Разбанить игрока\n{MenuShowAllPlayers}: Показать всех игроков\n{MenuExit}: Выход\n");
  25.  
  26.                 string userInput = Console.ReadLine();
  27.  
  28.                 switch (userInput)
  29.                 {
  30.                     case MenuAddPlayer:
  31.                         database.AddPlayer();
  32.                         break;
  33.  
  34.                     case MenuDeletePlayer:
  35.                         database.DeletePlayer();
  36.                         break;
  37.  
  38.                     case MenuBanPlayer:
  39.                         database.BanPlayer();
  40.                         break;
  41.  
  42.                     case MenuUnbanPlayer:
  43.                         database.UnbanPlayer();
  44.                         break;
  45.  
  46.                     case MenuShowAllPlayers:
  47.                         database.ShowPlayersList();
  48.                         break;
  49.  
  50.                     case MenuExit:
  51.                         isRun = false;
  52.                         break;
  53.  
  54.                     default:
  55.                         Console.WriteLine("Неверная команда, попробуйте еще раз");
  56.                         break;
  57.                 }
  58.             }
  59.         }
  60.     }
  61.  
  62.     class Database
  63.     {
  64.         private List<Player> _players = new List<Player>();
  65.  
  66.         private int _currentId = 0;
  67.  
  68.         public void AddPlayer()
  69.         {
  70.             Console.WriteLine("Введите ник игрока");
  71.  
  72.             string nickName = Console.ReadLine();
  73.  
  74.             Console.WriteLine("Введите уровень игрока: ");
  75.  
  76.             int playerLevel = 0;
  77.  
  78.             ReturnValidateInputNumber();
  79.  
  80.             Player Player = new Player(_currentId++, nickName, playerLevel, false);
  81.  
  82.             _players.Add(Player);
  83.  
  84.             Console.WriteLine($"Добавлен игрок с ником {nickName} id номером {_currentId} и уровнем {playerLevel}");
  85.         }
  86.  
  87.         public void BanPlayer()
  88.         {
  89.             if (IsListEmpty())
  90.             {
  91.                 return;
  92.             }
  93.  
  94.             Player player;
  95.  
  96.             if (TryGetPlayer("забанить", out player))
  97.             {
  98.                 player.Ban();
  99.  
  100.                 Console.WriteLine($"Игрок с ID {player.Id} забанен\n");
  101.             }
  102.             else
  103.             {
  104.                 Console.WriteLine("Игрок уже забанен\n");
  105.             }
  106.         }
  107.  
  108.         public void UnbanPlayer()
  109.         {
  110.             if (IsListEmpty())
  111.             {
  112.                 return;
  113.             }
  114.  
  115.             Player player;
  116.  
  117.             if (TryGetPlayer("забанить", out player))
  118.             {
  119.                 player.Unban();
  120.  
  121.                 Console.WriteLine($"Игрок с ID {player.Id} разбанен\n");
  122.             }
  123.             else
  124.             {
  125.                 Console.WriteLine("Игрок уже разбанен\n");
  126.             }
  127.         }
  128.  
  129.         public void DeletePlayer()
  130.         {
  131.             if (IsListEmpty())
  132.             {
  133.                 return;
  134.             }
  135.  
  136.             Player player;
  137.  
  138.             if (TryGetPlayer("удалить", out player))
  139.             {
  140.                 _players.Remove(player);
  141.  
  142.                 Console.WriteLine($"Игрок с ID {player.Id} удален\n");
  143.             }
  144.         }
  145.  
  146.         public void ShowPlayersList()
  147.         {
  148.             Console.WriteLine("Список игроков: ");
  149.  
  150.             foreach (Player player in _players)
  151.             {
  152.                 player.ShowPlayerState();
  153.             }
  154.  
  155.             return;
  156.         }
  157.  
  158.         private bool IsListEmpty()
  159.         {
  160.             if (_players.Count == 0)
  161.             {
  162.                 Console.WriteLine("Список пуст\n");
  163.  
  164.                 return true;
  165.             }
  166.  
  167.             return false;
  168.         }
  169.  
  170.         private bool TryGetPlayer(string message, out Player foundPlayer)
  171.         {
  172.             if (_players.Count == 0)
  173.             {
  174.                 Console.WriteLine("Список пуст\n");
  175.  
  176.                 foundPlayer = null;
  177.  
  178.                 return false;
  179.             }
  180.  
  181.             Console.WriteLine($"Введите id игрока, которого хотите {message}: ");
  182.  
  183.             int id = ReturnValidateInputNumber();
  184.  
  185.             foreach (Player player in _players)
  186.             {
  187.                 if (player.Id == id)
  188.                 {
  189.                     foundPlayer = player;
  190.  
  191.                     return true;
  192.                 }
  193.             }
  194.  
  195.             Console.WriteLine("\nИгрок не найден\n");
  196.  
  197.             foundPlayer = null;
  198.  
  199.             return false;
  200.         }
  201.  
  202.         private int ReturnValidateInputNumber()
  203.         {
  204.             int id = 0;
  205.  
  206.             while ((int.TryParse(Console.ReadLine(), out id)) == false)
  207.             {
  208.                 Console.WriteLine("Введено не число, попробуйте еще раз: ");
  209.             }
  210.  
  211.             return id;
  212.         }
  213.     }
  214.  
  215.     class Player
  216.     {
  217.         public Player(int id, string nickName, int level, bool isBanned)
  218.         {
  219.             Id = id;
  220.             NickName = nickName;
  221.             Level = level;
  222.             IsBanned = isBanned;
  223.         }
  224.  
  225.         public int Id { get; private set; }
  226.         public string NickName { get; private set; }
  227.         public int Level { get; private set; }
  228.         public bool IsBanned { get; private set; }
  229.  
  230.         public void Ban()
  231.         {
  232.             IsBanned = true;
  233.         }
  234.  
  235.         public void Unban()
  236.         {
  237.             IsBanned = false;
  238.         }
  239.  
  240.         public void ShowPlayerState()
  241.         {
  242.             Console.WriteLine($"ID {Id} Ник {NickName} Уровень {Level} Состояние бана {IsBanned}");
  243.         }
  244.     }
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement