Advertisement
viktarb

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

Oct 11th, 2022 (edited)
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.91 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class Program
  5. {
  6.     static void Main(string[] args)
  7.     {
  8.         Database playerBase = new Database();
  9.         playerBase.Work();
  10.     }
  11. }
  12.  
  13. class Database
  14. {
  15.     private long _id;
  16.     private List<Player> _players = new List<Player>();
  17.  
  18.     public Database()
  19.     {
  20.         _id = 0;
  21.     }
  22.  
  23.     public void Work()
  24.     {
  25.         const int ShowInfo = 1;
  26.         const int Delete = 2;
  27.         const int Ban = 3;
  28.         const int UnBan = 4;
  29.         const int AddNewPlayer = 5;
  30.         const int Exit = 9;
  31.  
  32.         bool isWork = true;
  33.  
  34.         while (isWork)
  35.         {
  36.             string userInput;
  37.  
  38.             Console.WriteLine($"База данных игроков. \nВведите команду: \n{ShowInfo} - Вывод БД в консоль, \n{Delete} - Удалить игрока, " +
  39.                 $"\n{Ban} - Забанить игрока, \n{UnBan} - Снять бан игрока,\n{AddNewPlayer} - Добавить игрока в БД,\n{Exit} - Выход.");
  40.             userInput = Console.ReadLine();
  41.             int.TryParse(userInput, out int result);
  42.  
  43.             switch (result)
  44.             {
  45.                 case ShowInfo:
  46.                     this.ShowInfo();
  47.                     break;
  48.                 case Delete:
  49.                     this.Delete();
  50.                     break;
  51.                 case Ban:
  52.                     this.Ban();
  53.                     break;
  54.                 case UnBan:
  55.                     this.Unban();
  56.                     break;
  57.                 case AddNewPlayer:
  58.                     AddPlayer();
  59.                     break;
  60.                 case Exit:
  61.                     isWork = false;
  62.                     break;
  63.                 default:
  64.                     Console.WriteLine("\aТак команды нет.");
  65.                     break;
  66.             }
  67.  
  68.             Console.WriteLine("Нажмите любую клавишу для продолжения.");
  69.             Console.ReadKey();
  70.             Console.Clear();
  71.         }
  72.     }
  73.  
  74.     private long GetId()
  75.     {
  76.         _id++;
  77.         return _id;
  78.     }
  79.  
  80.     private void AddPlayer()
  81.     {
  82.         string nickname;
  83.  
  84.         Console.WriteLine("Вы выбрали пункт меню \"Добавить игрока\".");
  85.         Console.Write("Введите NICKNAME нового игрока:");
  86.         nickname = Console.ReadLine();
  87.  
  88.         if (nickname != null)
  89.             _players.Add(new Player(GetId(), nickname));
  90.         else
  91.             Console.WriteLine("\aNICKNAME должен содержать пустую строку.");
  92.     }
  93.  
  94.     private void Ban()
  95.     {
  96.         Console.WriteLine("Вы выбрали пункт меню \"Забанить игрока\".");
  97.         TryGetPlayer(out Player player);
  98.  
  99.         player?.Ban();
  100.     }
  101.  
  102.     private void Unban()
  103.     {
  104.         Console.WriteLine("Вы выбрали пункт меню \"Снять бан игрока\".");
  105.         TryGetPlayer(out Player player);
  106.  
  107.         player?.Unban();
  108.     }
  109.  
  110.     private void Delete()
  111.     {
  112.         const int Yes = 1;
  113.         const int No = 2;
  114.  
  115.         string userInput;
  116.  
  117.         Console.WriteLine("Вы выбрали пункт меню \"Удалить игрока\".");
  118.         TryGetPlayer(out Player player);
  119.  
  120.         if (player != null)
  121.         {
  122.             Console.Write($"Вы действительно хотите безвозвратно удалить игрока {player.Nickname}? Это действие безвозвратно. {Yes} - Да, {No} - Нет.");
  123.  
  124.             userInput = Console.ReadLine();
  125.             int.TryParse(userInput, out int result);
  126.  
  127.             if (result != 0 && result == 1)
  128.             {
  129.                 _players.Remove(player);
  130.                 Console.WriteLine("Выполнено успешно.");
  131.             }
  132.             else
  133.                 Console.WriteLine($"Удаление игрока {player.Nickname} отменено.");
  134.  
  135.         }
  136.     }
  137.  
  138.     private void ShowInfo()
  139.     {
  140.         Console.WriteLine();
  141.  
  142.         for (int i = 0; i < _players.Count; i++)
  143.         {
  144.             _players[i].ShowInfo();
  145.         }
  146.  
  147.         Console.WriteLine();
  148.     }
  149.  
  150.     private void TryGetPlayer(out Player player)
  151.     {
  152.         bool isFoundPlayer = false;
  153.         player = null;
  154.         string userInput;
  155.  
  156.         Console.Write($"Введите id игрока:");
  157.         userInput = Console.ReadLine();
  158.         int.TryParse(userInput, out int id);
  159.  
  160.         for (int i = 0; i < _players.Count; i++)
  161.         {
  162.             if (id == _players[i].Id)
  163.             {
  164.                 isFoundPlayer = true;
  165.                 player = _players[i];
  166.                 i = _players.Count;
  167.             }
  168.         }
  169.  
  170.         if (isFoundPlayer)
  171.         {
  172.             Console.WriteLine($"Операция завершена успешно.");
  173.         }
  174.         else
  175.         {
  176.             Console.ForegroundColor = ConsoleColor.Red;
  177.             Console.WriteLine("\aИгрока с id равным " + id + " в базе данных не найдено.");
  178.             Console.ForegroundColor = ConsoleColor.White;
  179.         }
  180.     }
  181.  
  182.  
  183.     class Player
  184.     {
  185.         public long Id { get; private set; }
  186.         public string Nickname { get; private set; }
  187.         public bool IsBanned { get; private set; }
  188.         public int Level { get; private set; }
  189.  
  190.         public Player(long id, string nickname)
  191.         {
  192.             Id = id;
  193.             Nickname = nickname;
  194.             IsBanned = false;
  195.             Level = 0;
  196.         }
  197.  
  198.         public void Ban()
  199.         {
  200.             IsBanned = true;
  201.         }
  202.  
  203.         public void Unban()
  204.         {
  205.             IsBanned = false;
  206.         }
  207.  
  208.         public void ShowInfo()
  209.         {
  210.             Console.WriteLine($"Id - {Id}, Nickname - {Nickname}, IsBanned - {IsBanned}, Level - {Level}");
  211.         }
  212.     }
  213. }
Tags: Junior
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement