CCCPaste

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

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;
}
}