NikaBang

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

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