Created
May 5, 2024 15:31
-
-
Save NoDamage111/96c0826406a449b18a3e287ea01a96db 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
using System; | |
using System.Collections.Generic; | |
namespace ConsoleApp31 | |
{ | |
internal class Program | |
{ | |
static void Main(string[] args) | |
{ | |
const string CommandAddPlayer = "1"; | |
const string CommandRemovePlayer = "2"; | |
const string CommandBanPlayer = "3"; | |
const string CommandUnbanPlayer = "4"; | |
const string CommandShowAllPlayers = "5"; | |
const string CommandExit = "6"; | |
Database dataBase = new Database(); | |
bool isWorking = true; | |
Console.WriteLine($"{CommandAddPlayer}) Добавить игрока"); | |
Console.WriteLine($"{CommandRemovePlayer}) Удалить игрока"); | |
Console.WriteLine($"{CommandBanPlayer}) Забанить игрока"); | |
Console.WriteLine($"{CommandUnbanPlayer}) Разбанить игрока"); | |
Console.WriteLine($"{CommandShowAllPlayers}) Показать всех игроков"); | |
Console.WriteLine($"{CommandExit}) Завершить работу"); | |
while (isWorking) | |
{ | |
Console.Write("\nВведите номер команды: "); | |
switch (Console.ReadLine()) | |
{ | |
case CommandAddPlayer: | |
dataBase.AddPlayer(); | |
break; | |
case CommandRemovePlayer: | |
dataBase.RemovePlayerById(); | |
break; | |
case CommandBanPlayer: | |
dataBase.BanPlayer(); | |
break; | |
case CommandUnbanPlayer: | |
dataBase.UnbanPlayer(); | |
break; | |
case CommandShowAllPlayers: | |
dataBase.ShowAllPlayers(); | |
break; | |
case CommandExit: | |
isWorking = false; | |
break; | |
default: | |
Console.WriteLine("Неверный формат команды"); | |
break; | |
} | |
} | |
} | |
} | |
class Database | |
{ | |
private Dictionary<int, Player> _players = new Dictionary<int, Player>(); | |
public void AddPlayer() | |
{ | |
if(TryGetPlayer(out Player player, out string message, out int id)) | |
{ | |
Console.WriteLine(message); | |
} | |
else | |
{ | |
Console.Write($"\nВведите никнейм: "); | |
string nickname = Console.ReadLine(); | |
Console.Write($"\nВведите уровень: "); | |
string input = Console.ReadLine(); | |
if (int.TryParse(input, out int level) == false) | |
{ | |
Console.WriteLine("Вы ввели неверный формат уровня"); | |
return; | |
} | |
player = new Player(id, nickname, level); | |
_players.Add(id, player); | |
} | |
} | |
public void RemovePlayerById() | |
{ | |
if (TryGetPlayer(out Player player, out string message, out int id)) | |
{ | |
_players.Remove(id); | |
} | |
else | |
{ | |
Console.WriteLine("Игрока с таким ID не найдено"); | |
} | |
} | |
public void BanPlayer() | |
{ | |
if (TryGetPlayer(out Player player, out string message, out int id)) | |
{ | |
_players[id].Ban(); | |
Console.WriteLine($"Игрок {id} забанен"); | |
} | |
else | |
{ | |
Console.WriteLine("Игрока с таким ID не найдено"); | |
} | |
} | |
public void UnbanPlayer() | |
{ | |
if (TryGetPlayer(out Player player, out string message, out int id)) | |
{ | |
_players[id].Unban(); | |
Console.WriteLine($"Игрок {id} разабанен"); | |
} | |
else | |
{ | |
Console.WriteLine("Игрока с таким ID не найдено"); | |
} | |
} | |
public void ShowAllPlayers() | |
{ | |
if (_players.Count > 0) | |
{ | |
foreach (var player in _players) | |
{ | |
Console.Write($"Игрок {player.Key} \n" + | |
$"Никнейм: {player.Value.Nickname} \n" + | |
$"Урвоень: {player.Value.Level} \n"); | |
if (player.Value.isBanned == false) | |
{ | |
Console.WriteLine("ЗАБАНЕН!!!\n"); | |
} | |
else | |
{ | |
Console.WriteLine(""); | |
} | |
} | |
} | |
else | |
{ | |
Console.WriteLine("База игроков пока что пуста"); | |
} | |
} | |
private bool TryGetPlayer(out Player player, out string message, out int id) | |
{ | |
Console.Write($"\nВведите ID: "); | |
string input = Console.ReadLine(); | |
if (int.TryParse(input, out id) == false) | |
{ | |
message = "Вы ввели неверный формат id"; | |
player = null; | |
return false; | |
} | |
if (_players.ContainsKey(id)) | |
{ | |
message = "Игрок с таким ID уже существует"; | |
player = _players[id]; | |
return true; | |
} | |
else | |
{ | |
message = ""; | |
player = null; | |
return false; | |
} | |
} | |
} | |
class Player | |
{ | |
public Player(int id, string nickname, int level) | |
{ | |
Id = id; | |
Nickname = nickname; | |
Level = level; | |
IsBanned = true; | |
} | |
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; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment