Advertisement
IGRODELOFF

Task40.5

Jul 13th, 2022 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.57 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Task40
  8. {
  9.     internal class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int idPlayer = 0;
  14.             bool isExit = false;
  15.             string menu =
  16.                 "Добро пожаловать администратор в базе данных игроков. " +
  17.                 "\n\nУ вас в распоряжении есть несколько команд: " +
  18.                 "\nAdd - добавить игрока, по уникальному номеру;" +
  19.                 "\nDelete - удалить игрока, по уникальному номеру;" +
  20.                 "\nBan - забанить игрока, по уникальному номеру;" +
  21.                 "\nUnban - разбанить игрока, по уникальному номеру;" +
  22.                 "\nShow - показать всю информацию об игроках;" +
  23.                 "\nExit - выход из программы.\n";
  24.             string requestCommand =
  25.                 "Введите команду: ";
  26.             string commandNotFound =
  27.                 "Команда не найдена! Повторите попытку. ";
  28.             string parting =
  29.                 "Завершение работы. До свидания. ";
  30.             string inputKey =
  31.                 "Введите Enter для продолжения.";
  32.             string userInput;
  33.  
  34.             DatabasePlayers databasePlayers = new DatabasePlayers();
  35.  
  36.             while (isExit == false)
  37.             {
  38.                 Console.WriteLine(menu);
  39.                 Console.Write(requestCommand);
  40.                 userInput = Console.ReadLine();
  41.  
  42.                 switch (userInput)
  43.                 {
  44.                     case "Add":
  45.                         databasePlayers.Add(idPlayer);
  46.                         break;
  47.                     case "Delete":
  48.                         databasePlayers.Delete();
  49.                         break;
  50.                     case "Ban":
  51.                         databasePlayers.Ban();
  52.                         break;
  53.                     case "Unban":
  54.                         databasePlayers.UnBan();
  55.                         break;
  56.                     case "Show":
  57.                         databasePlayers.ShowAll();
  58.                         break;
  59.                     case "Exit":
  60.                         isExit = true;
  61.                         break;
  62.                     default:
  63.                         Console.WriteLine(commandNotFound);
  64.                         break;
  65.                 }
  66.                 idPlayer++;
  67.                 Console.WriteLine(inputKey);
  68.                 Console.ReadKey();
  69.                 Console.Clear();
  70.             }
  71.             Console.WriteLine(parting);
  72.         }
  73.     }
  74.  
  75.     class DatabasePlayers
  76.     {
  77.         private List<Player> _players = new List<Player>();
  78.  
  79.         public void ShowAll()
  80.         {
  81.             foreach (var player in _players)
  82.             {
  83.                 player.ShowInfo();
  84.             }
  85.         }
  86.  
  87.         public void Add(int indexPlayer)
  88.         {
  89.             bool isBanned = false;
  90.  
  91.             string userInputName;
  92.             int userInputLevel;
  93.             string requestNamePlayer =
  94.                 "Введите имя игрока: ";
  95.             string requestLevelPlayer =
  96.                 "Введите уровень игрока: ";
  97.  
  98.             Console.Write(requestNamePlayer);
  99.             userInputName = Console.ReadLine();
  100.  
  101.             userInputLevel = GetInt(requestLevelPlayer);
  102.  
  103.             Player user = new Player(indexPlayer, userInputName, userInputLevel, isBanned);
  104.             _players.Add(user);
  105.         }
  106.  
  107.         public void Delete()
  108.         {
  109.             string requestIdPlayer =
  110.                 "Введите Id игрока, которого хотите удалить: ";
  111.  
  112.             bool resultSearchPlayer = false;
  113.  
  114.             int userInput;
  115.  
  116.             while (resultSearchPlayer == false)
  117.             {
  118.                 userInput = GetInt(requestIdPlayer);
  119.  
  120.                 resultSearchPlayer = TryGetPlayer(userInput, out Player player);
  121.  
  122.                 if (resultSearchPlayer == true)
  123.                 {
  124.                     _players.Remove(player);
  125.                 }
  126.             }
  127.         }
  128.  
  129.         public void Ban()
  130.         {
  131.             string requestIdPlayer =
  132.                 "Введите Id игрока, которого хотите забанить: ";
  133.             string playerIsBanned =
  134.                 "Игрок был забанен.";
  135.             string playerBanned =
  136.                 "Игрок забанен.";
  137.  
  138.             bool resultSearchPlayer = false;
  139.  
  140.             int userInput;
  141.            
  142.             while (resultSearchPlayer == false)
  143.             {
  144.                 userInput = GetInt(requestIdPlayer);
  145.  
  146.                 resultSearchPlayer = TryGetPlayer(userInput, out Player player);
  147.  
  148.                 if (resultSearchPlayer == true)
  149.                 {
  150.                     if (player.IsBanned == false)
  151.                     {
  152.                         player.Ban();
  153.                         Console.WriteLine(playerBanned);
  154.                     }
  155.                     else
  156.                     {
  157.                         Console.WriteLine(playerIsBanned);
  158.                         resultSearchPlayer = true;
  159.                     }
  160.                 }
  161.             }
  162.         }
  163.  
  164.         public void UnBan()
  165.         {
  166.             string requestIdPlayer =
  167.                 "Введите Id игрока, которого хотите забанить: ";
  168.             string playerNotBanned =
  169.                 "Игрок был не забанен. ";
  170.             string playerUnBanned =
  171.                 "Игрок разбанен. ";
  172.  
  173.             bool resultSearchPlayer = false;
  174.  
  175.             int userInput;
  176.  
  177.             while (resultSearchPlayer == false)
  178.             {
  179.                 userInput = GetInt(requestIdPlayer);
  180.  
  181.                 resultSearchPlayer = TryGetPlayer(userInput, out Player player);
  182.  
  183.                 if (resultSearchPlayer == true)
  184.                 {
  185.                     if (player.IsBanned == true)
  186.                     {
  187.                         player.UnBan();
  188.                         Console.WriteLine(playerUnBanned);
  189.                     }
  190.                     else
  191.                     {
  192.                         Console.WriteLine(playerNotBanned);
  193.                     }
  194.                 }
  195.             }
  196.         }
  197.  
  198.         private int GetInt(string requestInputNumber)
  199.         {
  200.             string errorConversion = "Ошибка,вы вели не цифры! Попробуйте снова.";
  201.             string userInput;
  202.  
  203.             bool resultConverted = false;
  204.  
  205.             int number = 0;
  206.  
  207.             while (resultConverted == false)
  208.             {
  209.                 Console.Write(requestInputNumber);
  210.                 userInput = Console.ReadLine();
  211.  
  212.                 resultConverted = int.TryParse(userInput, out int numberConvert);
  213.  
  214.                 if (resultConverted != true)
  215.                     Console.WriteLine(errorConversion);
  216.                 else
  217.                     number = numberConvert;
  218.             }
  219.             return number;
  220.         }
  221.  
  222.         private bool TryGetPlayer(int userInput, out Player user)
  223.         {
  224.             int idPlayer = 0;
  225.             int defaultValue = 0;
  226.  
  227.             string defaultValueName = "nick";
  228.             string errorSearchIdPlayer =
  229.                 "Игрока с данным id не обнаруженно. \n";
  230.             string playerFound =
  231.                 "Игрок с данным id обнаружен. \n ";
  232.  
  233.             bool defaultBanStatus = false;
  234.  
  235.             user = new Player(defaultValue, defaultValueName, defaultValue, defaultBanStatus);
  236.  
  237.             foreach (var searchPlayer in _players)
  238.             {
  239.                 if (user.Id == userInput)
  240.                 {
  241.                     user = _players[idPlayer];
  242.                 }
  243.                 idPlayer++;
  244.             }
  245.  
  246.             if (user != null)
  247.             {
  248.                 Console.WriteLine(playerFound);
  249.                 return true;
  250.             }
  251.             else
  252.             {
  253.                 Console.WriteLine(errorSearchIdPlayer);
  254.                 return false;
  255.             }
  256.         }
  257.     }
  258.  
  259.     class Player
  260.     {
  261.         private string _nickName;
  262.         private int _level;
  263.  
  264.         public Player(int id, string nickName, int level, bool banStatus)
  265.         {
  266.             Id = id;
  267.             _nickName = nickName;
  268.             _level = level;
  269.             IsBanned = banStatus;
  270.         }
  271.  
  272.         public bool IsBanned { get; private set; }
  273.  
  274.         public int Id { get; private set; }
  275.  
  276.         public void Ban()
  277.         {
  278.             IsBanned = true;
  279.         }
  280.  
  281.         public void UnBan()
  282.         {
  283.             IsBanned = false;
  284.         }
  285.  
  286.         public void ShowInfo()
  287.         {
  288.             string banStatusConclusion;
  289.  
  290.             if (IsBanned)
  291.                 banStatusConclusion = "забанен";
  292.             else
  293.                 banStatusConclusion = "не забанен";
  294.  
  295.             Console.WriteLine(
  296.                 "\nУникальный номер: " + Id +
  297.                 "\nНикнейм: " + _nickName +
  298.                 "\nЛевел: " + _level +
  299.                 "\nЗабанен?: " + banStatusConclusion +
  300.                 "\n=============================================");
  301.         }
  302.     }
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement