using System;
using System.Collections.Generic;
using System.Drawing;
using System.Reflection;
internal class Program
{
static void Main(string[] args)
{
const string CommandAddPlayer = "1";
const string CommandBanPlayerById = "2";
const string CommandUnbanPlayerById = "3";
const string CommandDeletePlayerById = "4";
const string CommandExit = "Exit";
bool isRun = true;
DataBase dataBase = new DataBase();
while (isRun)
{
Console.Clear();
dataBase.ShowInfo();
Console.WriteLine($"{CommandAddPlayer} - Добавить игрока.\n" +
$"{CommandBanPlayerById} - Заблокировать игрока по ID.\n" +
$"{CommandUnbanPlayerById} - Разблокировать игрока по ID.\n" +
$"{CommandDeletePlayerById} - Удалить игрока по ID.\n" +
$"{CommandExit} - Завершить программу.");
switch (Console.ReadLine())
{
case CommandAddPlayer:
dataBase.AddPlayer();
break;
case CommandBanPlayerById:
dataBase.BanPlayer();
break;
case CommandUnbanPlayerById:
dataBase.UnbanPlayer();
break;
case CommandDeletePlayerById:
dataBase.DeletePlayer();
break;
case CommandExit:
isRun = false;
break;
default:
Console.WriteLine("Ошибка ввода.");
break;
}
Console.ReadKey();
}
Console.WriteLine("Программа завершена.");
Console.ReadKey();
}
}
class Player
{
static private int _identifications;
private bool _isBaned;
public Player(string name)
{
Name = name;
Level = 1;
Identification = ++_identifications;
_isBaned = false;
}
public string Name { get; private set; }
public int Level { get; private set; }
public int Identification { get; private set; }
public void Block()
{
_isBaned = true;
}
public void Unblock()
{
_isBaned = false;
}
public void ShowInfo()
{
Console.WriteLine($"{Identification}. Игрок: {Name}, уровень - {Level}. " + (_isBaned ? "Заблокирован." : "Активен."));
}
}
class DataBase
{
private List<Player> _players;
public DataBase()
{
_players = new List<Player>();
}
public void ShowInfo()
{
if (_players.Count > 0)
{
foreach (Player player in _players)
{
player.ShowInfo();
}
}
else
{
Console.WriteLine("Нет игроков в базе.");
}
Console.WriteLine(new String('-', 35));
}
public void AddPlayer()
{
Console.Write("Введи имя игрока: ");
string name = Console.ReadLine();
_players.Add(new Player(name));
Console.WriteLine("Игрок добален.");
}
public void BanPlayer()
{
if(TryGetPlayer(out Player player))
{
player.Block();
}
}
public void UnbanPlayer()
{
if (TryGetPlayer(out Player player))
{
player.Unblock();
}
}
public void DeletePlayer()
{
if(TryGetPlayer(out Player player))
{
_players.Remove(player);
}
}
private bool TryGetPlayer(out Player foundPlayer)
{
Console.Write("Введите номер игрока: ");
int id = ReadInt(Console.ReadLine());
foreach (Player player in _players)
{
if (player.Identification == id)
{
foundPlayer = player;
return true;
}
}
Console.WriteLine("Нет игрока с таким номером.");
foundPlayer = null;
return false;
}
private int ReadInt(string input)
{
int result;
int.TryParse(input, out result);
return result;
}
}