Advertisement
Askor

Hw30

Oct 29th, 2021 (edited)
1,315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.20 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 dataBase
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Database dataBase = new Database();
  14.  
  15.             do
  16.             {
  17.                 Console.Clear();
  18.                 Console.WriteLine("Выберите действие\n 1 - Добавить игрока\n 2 - удалить игрока\n 3 - посмотреть список игроков\n 4 - забанить игрока\n 5 - разбанить игрока");
  19.  
  20.                 switch (Console.ReadLine())
  21.                 {
  22.                     case "1":
  23.                         dataBase.AddPlayer();
  24.                         break;
  25.                     case "2":
  26.                         dataBase.DeletePlayer();
  27.                         break;
  28.                     case "3":
  29.                         dataBase.ShowPlayers();
  30.                         break;
  31.                     case "4":
  32.                         dataBase.BanPlayer();
  33.                         break;
  34.                     case "5":
  35.                         dataBase.UnBanPlayer();
  36.                         break;
  37.                     default:
  38.                         Console.WriteLine("Такого действия нет.");
  39.                         break;
  40.                 }
  41.  
  42.                 Console.WriteLine("Для продолжения нажмите любую кнопку | Для выхода нажмите Escape");
  43.             }
  44.             while (Console.ReadKey().Key != ConsoleKey.Escape);
  45.         }
  46.     }
  47.  
  48.     class Player
  49.     {
  50.         private string _name;
  51.         private int _lvl;
  52.         private bool _isBanned;
  53.  
  54.         public Player(string name, int lvl)
  55.         {
  56.             _name = name;
  57.             _lvl = lvl;
  58.         }
  59.  
  60.         public void Ban()
  61.         {
  62.             _isBanned = true;
  63.         }
  64.  
  65.         public void Unban()
  66.         {
  67.             _isBanned = false;
  68.         }
  69.  
  70.         public void ShowInfo()
  71.         {
  72.             Console.WriteLine($"Nickname: {_name} | Lvl: {_lvl} | Banned: {_isBanned}");
  73.         }
  74.     }
  75.  
  76.     class Database
  77.     {
  78.         private List<Player> _players;
  79.  
  80.         public Database()
  81.         {
  82.             _players = new List<Player>();
  83.         }
  84.  
  85.         public void ShowPlayers()
  86.         {
  87.             int playerIndex = 1;
  88.  
  89.             foreach (Player player in _players)
  90.             {
  91.                 Console.Write(playerIndex++ + ".");
  92.                 player.ShowInfo();  
  93.             }
  94.         }
  95.  
  96.         public void AddPlayer()
  97.         {
  98.             Console.Write("Введите имя игрока: ");
  99.             string playerName = Console.ReadLine();
  100.             Console.WriteLine();
  101.  
  102.             Console.Write("Введите уровень игрока: ");
  103.             Console.WriteLine();
  104.  
  105.             int number;
  106.             bool isNumber;
  107.             int playerLvl;
  108.  
  109.             playerLvl = GetNumber(out number);
  110.  
  111.             Player player = new Player(playerName, playerLvl);
  112.             _players.Add(player);
  113.         }
  114.  
  115.         public void DeletePlayer()
  116.         {
  117.             Console.WriteLine("Введите порядковый номер игрока, которого хотите удалить: ");
  118.  
  119.             if (TryGetPlayer(out Player player))
  120.             {
  121.                 _players.Remove(player);
  122.             }
  123.             else
  124.             {
  125.                 Console.WriteLine("Такого игрока нет");
  126.             }
  127.         }
  128.  
  129.         public void BanPlayer()
  130.         {
  131.             Console.WriteLine("Введите порядковый номер игрока, которого хотите забанить: ");
  132.  
  133.             if (TryGetPlayer(out Player player))
  134.             {
  135.                 player.Ban();
  136.             }
  137.             else
  138.             {
  139.                 Console.WriteLine("Такого игрока нет");
  140.             }
  141.  
  142.         }
  143.  
  144.         public void UnBanPlayer()
  145.         {
  146.             Console.WriteLine("Введите порядковый номер игрока, которого хотите разбанить: ");
  147.  
  148.             if (TryGetPlayer(out Player player))
  149.             {
  150.                 player.Unban();
  151.             }
  152.             else
  153.             {
  154.                 Console.WriteLine("Такого игрока нет");
  155.             }
  156.  
  157.         }
  158.  
  159.         public int GetNumber(out int number)
  160.         {
  161.             string playerIndex;
  162.  
  163.             do
  164.             {
  165.                 playerIndex = Console.ReadLine();
  166.             }
  167.             while (!int.TryParse(playerIndex, out number));
  168.  
  169.             return number = Convert.ToInt32(playerIndex);
  170.         }
  171.  
  172.  
  173.         private bool TryGetPlayer(out Player player)
  174.         {
  175.             int playerIndex;
  176.             playerIndex = GetNumber(out int number) - 1;
  177.  
  178.             if(playerIndex >= 0 && playerIndex < _players.Count)
  179.             {
  180.                 player = _players.ElementAt(playerIndex);
  181.                 return true;
  182.             }
  183.             else
  184.             {
  185.                 player = null;
  186.                 return false;
  187.             }
  188.         }
  189.     }
  190. }
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement