Skip to content

Instantly share code, notes, and snippets.

@JUGADORUS

JUGADORUS/HW41 Secret

Last active September 3, 2023 11:39
Show Gist options
  • Save JUGADORUS/858afeb7031fe43408025fa273e4b606 to your computer and use it in GitHub Desktop.
Save JUGADORUS/858afeb7031fe43408025fa273e4b606 to your computer and use it in GitHub Desktop.
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