Advertisement
NikaBang

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

Nov 16th, 2024 (edited)
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.58 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. internal class Program
  5. {
  6.     static void Main(string[] args)
  7.     {
  8.         const string CommandAddPlayer = "1";
  9.         const string CommandRemovePlayer = "2";
  10.         const string CommandBlockPlayer = "3";
  11.         const string CommandUnblockPlayer = "4";
  12.         const string CommandExit = "5";
  13.         const string CommandCheatCod = "777";
  14.  
  15.         bool isProgram = true;
  16.  
  17.         PlayerDatabase playerDatabase = new PlayerDatabase();
  18.  
  19.         while (isProgram)
  20.         {
  21.             Console.Clear();
  22.             playerDatabase.ShowPlayers();
  23.  
  24.             Console.WriteLine($"Меню:\n{CommandAddPlayer} - Добавить игрока.\n" +
  25.                 $"{CommandRemovePlayer} - Удалить игрока.\n" +
  26.                 $"{CommandBlockPlayer} - Заболкирова игрока.\n" +
  27.                 $"{CommandUnblockPlayer} - Разблокирова игрока.\n" +
  28.                 $"{CommandExit} - Выход.");
  29.             Console.Write("Выбери пункт меню: ");
  30.  
  31.             switch (Console.ReadLine())
  32.             {
  33.                 case CommandAddPlayer:
  34.                     playerDatabase.AddPlayer();
  35.                     break;
  36.                 case CommandRemovePlayer:
  37.                     playerDatabase.RemovePlayer();
  38.                     break;
  39.                 case CommandBlockPlayer:
  40.                     playerDatabase.BlockPlayer();
  41.                     break;
  42.                 case CommandUnblockPlayer:
  43.                     playerDatabase.UnblockPlayer();
  44.                     break;
  45.                 case CommandExit:
  46.                     isProgram = false;
  47.                     break;
  48.                 case CommandCheatCod:
  49.                     playerDatabase.UseCheatCod();
  50.                     break;
  51.                 default:
  52.                     Console.WriteLine("Ошибка ввода.");
  53.                     Console.ReadLine();
  54.                     break;
  55.             }
  56.         }
  57.  
  58.         Console.WriteLine("Программа завершена.");
  59.         Console.ReadKey();
  60.     }
  61. }
  62.  
  63. class Player
  64. {
  65.     private bool _canActive;
  66.  
  67.     public Player(string name, int id)
  68.     {
  69.         Name = name;
  70.         Id = id;
  71.         Level = 1;
  72.         _canActive = true;
  73.     }
  74.  
  75.     public string Name { get; private set; }
  76.     public int Id { get; private set; }
  77.     public int Level { get; private set; }
  78.  
  79.     public void Block()
  80.     {
  81.         _canActive = false;
  82.     }
  83.  
  84.     public void Unblock()
  85.     {
  86.         _canActive = true;
  87.     }
  88.  
  89.     public void LevelUp(int level)
  90.     {
  91.         Level += level;
  92.     }
  93.  
  94.     public void ShowInfo()
  95.     {
  96.         ConsoleColor defaultColor = Console.ForegroundColor;
  97.  
  98.         Console.WriteLine($"Номер - {Id}\nНик - {Name}\nУровень - {Level}");
  99.         Console.Write("Статус - ");
  100.  
  101.         if (_canActive)
  102.         {
  103.             Console.ForegroundColor = ConsoleColor.Green;
  104.             Console.WriteLine("Активен!");
  105.             Console.ForegroundColor = defaultColor;
  106.         }
  107.         else
  108.         {
  109.             Console.ForegroundColor = ConsoleColor.Red;
  110.             Console.WriteLine("Заблокирован!");
  111.             Console.ForegroundColor = defaultColor;
  112.         }
  113.  
  114.         Console.WriteLine(new String('-', 40));
  115.     }
  116. }
  117.  
  118. class PlayerDatabase
  119. {
  120.     private int _lastAssignedId;
  121.     private List<Player> _players;
  122.  
  123.     public PlayerDatabase()
  124.     {
  125.         _lastAssignedId = 0;
  126.         _players = new List<Player>();
  127.     }
  128.  
  129.     public void AddPlayer()
  130.     {
  131.         string name;
  132.  
  133.         Console.Write("Придумай Ник вашему герою: ");
  134.         name = Console.ReadLine();
  135.  
  136.         _lastAssignedId++;
  137.         _players.Add(new Player(name, _lastAssignedId));
  138.     }
  139.  
  140.     public void ShowPlayers()
  141.     {
  142.         if (_players.Count > 0)
  143.         {
  144.             foreach (Player player in _players)
  145.             {
  146.                 player.ShowInfo();
  147.             }
  148.         }
  149.         else
  150.         {
  151.             Console.WriteLine("В базе данных нет игроков!");
  152.             Console.WriteLine(new String('-', 40));
  153.         }
  154.     }
  155.  
  156.     public void RemovePlayer()
  157.     {
  158.         if (TryGetPlayer(out Player player))
  159.         {
  160.             _players.Remove(player);
  161.         }
  162.     }
  163.  
  164.     public void BlockPlayer()
  165.     {
  166.         if (TryGetPlayer(out Player player))
  167.         {
  168.             player.Block();
  169.         }
  170.     }
  171.  
  172.     public void UnblockPlayer()
  173.     {
  174.         if (TryGetPlayer(out Player player))
  175.         {
  176.             player.Unblock();
  177.         }
  178.     }
  179.  
  180.     public void UseCheatCod()
  181.     {
  182.         if (_players.Count > 0)
  183.         {
  184.             int index;
  185.             int cheatLevel = 100;
  186.  
  187.             Random random = new Random();
  188.  
  189.             index = random.Next(0, _players.Count);
  190.             _players[index].LevelUp(cheatLevel);
  191.         }
  192.     }
  193.  
  194.     private bool TryGetPlayer(out Player foundPlayer)
  195.     {
  196.         Console.Write("Введите номер игрока: ");
  197.         int id = ReadInt(Console.ReadLine());
  198.  
  199.         foreach (Player player in _players)
  200.         {
  201.  
  202.             if (player.Id == id)
  203.             {
  204.                 foundPlayer = player;
  205.                 return true;
  206.             }
  207.         }
  208.  
  209.         Console.WriteLine("Нет игрока с таким номером.");
  210.         foundPlayer = null;
  211.  
  212.         return false;
  213.     }
  214.  
  215.     private int ReadInt(string input)
  216.     {
  217.         int result;
  218.  
  219.         int.TryParse(input, out result);
  220.         return result;
  221.     }
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement