Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save trayforyou/d5dc7fa6a5c7c3bbb7a146db95933c5b to your computer and use it in GitHub Desktop.
Save trayforyou/d5dc7fa6a5c7c3bbb7a146db95933c5b to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Globalization;
namespace OOP_number_3
{
internal class Program
{
static void Main(string[] args)
{
const string CommandAddPlayer = "1";
const string CommandRemovePlayer = "2";
const string CommandAddToBanList = "3";
const string CommandRemoveFromBlacklist = "4";
const string CommandShowAllPlayers = "5";
const string CommandExit = "6";
bool isOpen = true;
Database database = new Database();
while (isOpen)
{
Console.Write($"Выберите необходимый пункт меню:\n" +
$"{CommandAddPlayer}. Добавить игрока.\n" +
$"{CommandRemovePlayer}. Удалить игрока.\n" +
$"{CommandAddToBanList}. Забанить игрока.\n" +
$"{CommandRemoveFromBlacklist}. Разбанить игрока.\n" +
$"{CommandShowAllPlayers}. Показать всех игроков.\n" +
$"{CommandExit}. Выйти.\n\n");
string playerInput = Console.ReadLine();
switch (playerInput)
{
case CommandAddPlayer:
database.AddPlayer();
break;
case CommandRemovePlayer:
database.DeletePlayer();
break;
case CommandAddToBanList:
database.BanPlayer();
break;
case CommandRemoveFromBlacklist:
database.UnbanPlayer();
break;
case CommandShowAllPlayers:
database.ShowAllPlayers();
break;
case CommandExit:
isOpen = false;
break;
default:
Console.WriteLine("Такой команды нет!");
Console.ReadKey();
break;
}
}
}
}
class Player
{
private string _banStatus;
private string _name;
private int _lvl;
private bool _isBanned = false;
public Player(string name, int lvl)
{
_name = name;
_lvl = lvl;
}
public void Ban()
{
_isBanned = true;
}
public void Unban()
{
_isBanned = false;
}
public void ShowInfo()
{
if (_isBanned)
_banStatus = "Забанен";
else
_banStatus = "Не забанен";
Console.WriteLine($"Игрок {_name}.\nУровень {_lvl}.\n{_banStatus}.");
}
}
class Database
{
private int _countCreatedPlayers = 1;
private Dictionary<int, Player> _players = new Dictionary<int, Player>();
public void BanPlayer()
{
int id = GetPlayerId();
if (_players.ContainsKey(id))
_players[id].Ban();
ReadAndClearConsole();
}
public void UnbanPlayer()
{
int id = GetPlayerId();
if (_players.ContainsKey(id))
_players[id].Unban(); ;
ReadAndClearConsole();
}
public void ShowAllPlayers()
{
string separator = "--------------------";
Console.WriteLine("Игроки:\n" + separator);
foreach (var player in _players)
{
Console.Write(player.Key + " ");
player.Value.ShowInfo();
Console.WriteLine(separator);
}
ReadAndClearConsole();
}
public void AddPlayer()
{
bool isInput = true;
while (isInput)
{
string nameInput;
string lvlInput;
Console.WriteLine("Введите имя игрока:");
nameInput = Console.ReadLine();
Console.WriteLine("Введите уровень игрока:");
lvlInput = Console.ReadLine();
if (int.TryParse(lvlInput, out int lvlIntInput))
{
int _id = _countCreatedPlayers++;
Player player = new Player(nameInput, lvlIntInput);
_players.Add(_id, player);
Console.WriteLine("Игрок успешно добавлен!");
ReadAndClearConsole();
isInput = false;
}
else
{
Console.WriteLine("Уровень должен быть целым числом!");
ReadAndClearConsole();
}
}
}
public void DeletePlayer()
{
Console.WriteLine($"Введите айди пользователя:");
string playerInput = Console.ReadLine();
if (int.TryParse(playerInput, out int id) && _players.ContainsKey(id))
{
_players.Remove(id);
Console.WriteLine("Игрок удален!");
ReadAndClearConsole();
}
else
{
Console.WriteLine("Игрока с таким айди не существует");
ReadAndClearConsole();
}
}
private int GetPlayerId()
{
Console.WriteLine("Введите айди игрока:");
string userInput = Console.ReadLine();
if (int.TryParse(userInput, out int id))
return id;
else
return 0;
}
private void ReadAndClearConsole()
{
Console.ReadKey();
Console.Clear();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment