Last active
April 18, 2024 06:22
-
-
Save Dead-in-side/2ef0b80cbbbe93f44733ade1d7a28f9d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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