Skip to content

Instantly share code, notes, and snippets.

@Dead-in-side
Last active April 18, 2024 06:22
Show Gist options
  • Save Dead-in-side/2ef0b80cbbbe93f44733ade1d7a28f9d to your computer and use it in GitHub Desktop.
Save Dead-in-side/2ef0b80cbbbe93f44733ade1d7a28f9d to your computer and use it in GitHub Desktop.
namespace IJunior
{
public class Program
{
private static void Main(string[] args)
{
DataBase dataBase = new DataBase();
bool isWork = true;
while (isWork)
{
Console.WriteLine((int)ConsoleCommand.AddPlayer + ". Добавить игрока.");
Console.WriteLine((int)ConsoleCommand.BanPlayer + ". Забанить игрока по номеру.");
Console.WriteLine((int)ConsoleCommand.UnbanPlayer + ". Разбанить игрока по номеру.");
Console.WriteLine((int)ConsoleCommand.DeletePlayer + ". Удалить игрока.");
Console.WriteLine((int)ConsoleCommand.ShowInfo + ". Показать информацию об игроках.");
Console.WriteLine((int)ConsoleCommand.Exit + ". Выход.");
if (int.TryParse(Console.ReadLine(), out int userInput))
{
switch (userInput)
{
case (int)ConsoleCommand.AddPlayer:
dataBase.AddPlayer();
break;
case (int)ConsoleCommand.BanPlayer:
dataBase.BanPlayer();
break;
case (int)ConsoleCommand.DeletePlayer:
dataBase.DeletePlayer();
break;
case (int)ConsoleCommand.UnbanPlayer:
dataBase.UnbanPlayer();
break;
case (int)ConsoleCommand.ShowInfo:
dataBase.ShowInfo();
break;
case (int)ConsoleCommand.Exit:
isWork = false;
break;
default:
Console.WriteLine("Некорректный ввод");
break;
}
Console.ReadLine();
Console.Clear();
}
}
}
}
public enum ConsoleCommand
{
AddPlayer = 1,
BanPlayer,
UnbanPlayer,
DeletePlayer,
ShowInfo,
Exit
}
public class DataBase
{
private List<Player> _players = new List<Player>();
private int lastIndex=1;
public void AddPlayer()
{
Console.WriteLine("Введите имя: ");
string name = Console.ReadLine();
Console.WriteLine("Введите уровень игрока");
if (int.TryParse(Console.ReadLine(), out int level))
{
Player player = new Player(lastIndex, name, level);
_players.Add(player);
lastIndex++;
}
else
{
Console.WriteLine("Некорректный ввод! Перепроверьте введенные данные");
}
}
public void BanPlayer()
{
if (TryGetPlayer(out Player player))
{
player.Ban();
}
}
public void UnbanPlayer()
{
if (TryGetPlayer(out Player player))
{
player.Unban();
}
}
public void DeletePlayer()
{
if (TryGetPlayer(out Player player))
{
_players.Remove(player);
}
}
private bool TryGetPlayer(out Player foundPlayer)
{
bool isFound = false;
foundPlayer = null;
Console.WriteLine("Введите номер игрока: ");
if (int.TryParse(Console.ReadLine(), out int number))
{
foreach (var player in _players)
{
if (player.Number == number)
{
isFound = true;
foundPlayer = player;
}
}
}
return isFound;
}
public void ShowInfo()
{
foreach (var player in _players)
{
player.ShowInfo();
}
}
}
public class Player
{
private string _name;
private int _level;
private bool _isBanned = false;
public Player(int number, string name, int level)
{
Number = number;
_name = name;
_level = level;
}
public int Number { get; private set; }
public void Ban()
{
_isBanned = true;
}
public void Unban()
{
_isBanned = false;
}
public void ShowInfo()
{
Console.WriteLine($"Игрок №{Number}, Ник:{_name}, уровень:{_level}, Забанен - {_isBanned}");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment