Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save NoDamage111/96c0826406a449b18a3e287ea01a96db to your computer and use it in GitHub Desktop.
Save NoDamage111/96c0826406a449b18a3e287ea01a96db to your computer and use it in GitHub Desktop.
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