-
-
Save JUGADORUS/858afeb7031fe43408025fa273e4b606 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 HW41 | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
const string CommandAdd = "1"; | |
const string CommandBan = "2"; | |
const string CommandUnban = "3"; | |
const string CommandDeletePlayer = "4"; | |
const string CommandShowAllPlayers = "5"; | |
const string Exit = "6"; | |
string userChoice; | |
bool isWorking = true; | |
Database database = new Database(); | |
while (isWorking == true) | |
{ | |
Console.WriteLine($"{CommandAdd} - добавить игрока" + | |
$"\n{CommandBan} - бан игрока по уникальному номеру" + | |
$"\n{CommandUnban} - разбанить игрока по уникальному номеру" + | |
$"\n{CommandDeletePlayer} - удалить игрока по уникальному номеру " + | |
$"\n{CommandShowAllPlayers} - показать всех игроков" + | |
$"\n{Exit} - выход"); | |
userChoice = Console.ReadLine(); | |
switch (userChoice) | |
{ | |
case CommandAdd: | |
database.AddPlayer(); | |
break; | |
case CommandBan: | |
database.BanPlayer(); | |
break; | |
case CommandUnban: | |
database.UnbanPlayer(); | |
break; | |
case CommandDeletePlayer: | |
database.DeletePlayer(); | |
break; | |
case CommandShowAllPlayers: | |
Console.Clear(); | |
database.ShowAllPlayers(); | |
break; | |
case Exit: | |
isWorking = false; | |
break; | |
} | |
} | |
} | |
} | |
class Player | |
{ | |
public Player(int uniqueCode, string name, int level, bool isBanned) | |
{ | |
UniqueCode = uniqueCode; | |
Name = name; | |
Level = level; | |
IsBanned = isBanned; | |
} | |
public int UniqueCode { get; private set; } | |
public string Name { 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; | |
} | |
public void ShowInfo() | |
{ | |
Console.WriteLine($"Уникальный код: {UniqueCode} Имя: {Name} Уровень: {Level} Состояние бана: {IsBanned}"); | |
} | |
} | |
class Database | |
{ | |
private int _lastIdOfPlayer = 0; | |
private List<Player> _players = new List<Player>(); | |
public void AddPlayer() | |
{ | |
int level; | |
_lastIdOfPlayer++; | |
Console.Clear(); | |
Console.WriteLine("Введите ник:"); | |
string name = Console.ReadLine(); | |
Console.WriteLine("Введите уровень:"); | |
string userInput = Console.ReadLine(); | |
bool isNumber = int.TryParse(userInput, out level); | |
if (isNumber == true) | |
{ | |
bool isBanned = false; | |
Player player = new Player(_lastIdOfPlayer, name, level, isBanned); | |
_players.Add(player); | |
} | |
else | |
{ | |
Console.WriteLine("Ошибка ввода!"); | |
} | |
} | |
public void BanPlayer() | |
{ | |
if (TryGetPlayer(out Player player) == true) | |
{ | |
player.Ban(); | |
} | |
} | |
public void UnbanPlayer() | |
{ | |
if (TryGetPlayer(out Player player) == true) | |
{ | |
player.Unban(); | |
} | |
} | |
public void DeletePlayer() | |
{ | |
if (TryGetPlayer(out Player player) == true) | |
{ | |
_players.Remove(player); | |
} | |
} | |
public void ShowAllPlayers() | |
{ | |
int indexOfPlayer = 0; | |
foreach (var player in _players) | |
{ | |
{ | |
_players[indexOfPlayer].ShowInfo(); | |
} | |
indexOfPlayer++; | |
} | |
} | |
private bool TryGetPlayer(out Player player) | |
{ | |
Console.WriteLine("Введите уникальный номер игрока:"); | |
string userInput = Console.ReadLine(); | |
bool isNumber = int.TryParse(userInput, out int UniqueCode); | |
if (isNumber == true) | |
{ | |
for (int i = 0; i < _players.Count; i++) | |
{ | |
if (UniqueCode == _players[i].UniqueCode) | |
{ | |
player = _players[i]; | |
return true; | |
} | |
} | |
} | |
else | |
{ | |
Console.WriteLine("Ошибка ввода!"); | |
} | |
player = null; | |
return false; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment