Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Runtime.CompilerServices;
- namespace База_данных_игроков
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- const string MenuAddPlayer = "1";
- const string MenuDeletePlayer = "2";
- const string MenuBanPlayer = "3";
- const string MenuUnbanPlayer = "4";
- const string MenuShowAllPlayers = "5";
- const string MenuExit = "6";
- bool isRun = true;
- Database database = new Database();
- while (isRun)
- {
- Console.WriteLine($"\nМеню базы данных игроков:\n{MenuAddPlayer}: Добавить игрока\n" +
- $"{MenuDeletePlayer}: Удалить игрока\n{MenuBanPlayer}: Забанить игрока\n" +
- $"{MenuUnbanPlayer}: Разбанить игрока\n{MenuShowAllPlayers}: Показать всех игроков\n{MenuExit}: Выход\n");
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case MenuAddPlayer:
- database.AddPlayer();
- break;
- case MenuDeletePlayer:
- database.DeletePlayer();
- break;
- case MenuBanPlayer:
- database.BanPlayer();
- break;
- case MenuUnbanPlayer:
- database.UnbanPlayer();
- break;
- case MenuShowAllPlayers:
- database.ShowPlayersList();
- break;
- case MenuExit:
- isRun = false;
- break;
- default:
- Console.WriteLine("Неверная команда, попробуйте еще раз");
- break;
- }
- }
- }
- }
- class Database
- {
- private List<Player> _players = new List<Player>();
- private int _currentId = 0;
- public void AddPlayer()
- {
- Console.WriteLine("Введите ник игрока");
- string nickName = Console.ReadLine();
- Console.WriteLine("Введите уровень игрока: ");
- int playerLevel = 0;
- ReturnValidateInputNumber();
- Player Player = new Player(_currentId++, nickName, playerLevel, false);
- _players.Add(Player);
- Console.WriteLine($"Добавлен игрок с ником {nickName} id номером {_currentId} и уровнем {playerLevel}");
- }
- public void BanPlayer()
- {
- if (IsListEmpty())
- {
- return;
- }
- Player player;
- if (TryGetPlayer("забанить", out player))
- {
- player.Ban();
- Console.WriteLine($"Игрок с ID {player.Id} забанен\n");
- }
- else
- {
- Console.WriteLine("Игрок уже забанен\n");
- }
- }
- public void UnbanPlayer()
- {
- if (IsListEmpty())
- {
- return;
- }
- Player player;
- if (TryGetPlayer("забанить", out player))
- {
- player.Unban();
- Console.WriteLine($"Игрок с ID {player.Id} разбанен\n");
- }
- else
- {
- Console.WriteLine("Игрок уже разбанен\n");
- }
- }
- public void DeletePlayer()
- {
- if (IsListEmpty())
- {
- return;
- }
- Player player;
- if (TryGetPlayer("удалить", out player))
- {
- _players.Remove(player);
- Console.WriteLine($"Игрок с ID {player.Id} удален\n");
- }
- }
- public void ShowPlayersList()
- {
- Console.WriteLine("Список игроков: ");
- foreach (Player player in _players)
- {
- player.ShowPlayerState();
- }
- return;
- }
- private bool IsListEmpty()
- {
- if (_players.Count == 0)
- {
- Console.WriteLine("Список пуст\n");
- return true;
- }
- return false;
- }
- private bool TryGetPlayer(string message, out Player foundPlayer)
- {
- if (_players.Count == 0)
- {
- Console.WriteLine("Список пуст\n");
- foundPlayer = null;
- return false;
- }
- Console.WriteLine($"Введите id игрока, которого хотите {message}: ");
- int id = ReturnValidateInputNumber();
- foreach (Player player in _players)
- {
- if (player.Id == id)
- {
- foundPlayer = player;
- return true;
- }
- }
- Console.WriteLine("\nИгрок не найден\n");
- foundPlayer = null;
- return false;
- }
- private int ReturnValidateInputNumber()
- {
- int id = 0;
- while ((int.TryParse(Console.ReadLine(), out id)) == false)
- {
- Console.WriteLine("Введено не число, попробуйте еще раз: ");
- }
- return id;
- }
- }
- class Player
- {
- public Player(int id, string nickName, int level, bool isBanned)
- {
- Id = id;
- NickName = nickName;
- Level = level;
- IsBanned = isBanned;
- }
- public int Id { get; private set; }
- public string NickName { get; private set; }
- public int Level { get; private set; }
- public bool IsBanned { get; private set; }
- public void Ban()
- {
- IsBanned = true;
- }
- public void Unban()
- {
- IsBanned = false;
- }
- public void ShowPlayerState()
- {
- Console.WriteLine($"ID {Id} Ник {NickName} Уровень {Level} Состояние бана {IsBanned}");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement