Created
May 19, 2024 03:53
-
-
Save trayforyou/d5dc7fa6a5c7c3bbb7a146db95933c5b 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; | |
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