Advertisement
JohnJuly

Homework40

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