Created
December 8, 2025 19:30
-
-
Save Attosius/f2c4e93b2383af4a0527a29c16857035 to your computer and use it in GitHub Desktop.
ДЗ: База данных игроков
This file contains hidden or 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.Linq; | |
| namespace IJuniorTasks | |
| { | |
| internal class Program | |
| { | |
| static void Main(string[] args) | |
| { | |
| const string CommandAddPlayer = "1"; | |
| const string CommandRemovePlayer = "2"; | |
| const string CommandBan = "3"; | |
| const string CommandUnban = "4"; | |
| const string CommandShow = "5"; | |
| const string CommandExit = "6"; | |
| bool isWork = true; | |
| var database = new DatabasePlayers(); | |
| while (isWork) | |
| { | |
| Console.WriteLine($"\n\nВведите команду:"); | |
| Console.WriteLine($"{CommandAddPlayer}. Добавить игрока"); | |
| Console.WriteLine($"{CommandRemovePlayer}. Удалить игрока"); | |
| Console.WriteLine($"{CommandBan}. Забанить игрока"); | |
| Console.WriteLine($"{CommandUnban}. Разбанить игрока"); | |
| Console.WriteLine($"{CommandShow}. Показать игроков"); | |
| Console.WriteLine($"{CommandExit}. Выход"); | |
| Console.WriteLine(); | |
| var command = Console.ReadLine(); | |
| switch (command) | |
| { | |
| case CommandAddPlayer: | |
| database.AddPlayer(); | |
| break; | |
| case CommandRemovePlayer: | |
| database.RemovePlayer(); | |
| break; | |
| case CommandBan: | |
| database.BanPlayer(); | |
| break; | |
| case CommandUnban: | |
| database.UnbanPlayer(); | |
| break; | |
| case CommandShow: | |
| database.ShowAll(); | |
| break; | |
| case CommandExit: | |
| isWork = false; | |
| break; | |
| default: | |
| Console.WriteLine($"Некорректная команда!"); | |
| break; | |
| } | |
| } | |
| } | |
| } | |
| public class DatabasePlayers | |
| { | |
| private readonly List<Player> _playerList = new(); | |
| public void AddPlayer() | |
| { | |
| Console.WriteLine($"Введите ник игрока:"); | |
| var nick = Console.ReadLine(); | |
| var id = GetNewId(); | |
| var player = new Player(id, nick, Player.DefaultLevel); | |
| _playerList.Add(player); | |
| Console.WriteLine($"Игрок {nick} успешно добавлен. Id: {id}"); | |
| } | |
| public void RemovePlayer() | |
| { | |
| var player = GetPlayerById(); | |
| if (player == null) | |
| { | |
| return; | |
| } | |
| _playerList.Remove(player); | |
| Console.WriteLine($"Игрок c Id {player.Id} успешно удален"); | |
| } | |
| public void BanPlayer() | |
| { | |
| var player = GetPlayerById(); | |
| if (player == null) | |
| { | |
| return; | |
| } | |
| player.IsBan = true; | |
| Console.WriteLine($"Игрок c Id {player.Id} успешно забанен"); | |
| } | |
| public void UnbanPlayer() | |
| { | |
| var player = GetPlayerById(); | |
| if (player == null) | |
| { | |
| return; | |
| } | |
| player.IsBan = false; | |
| Console.WriteLine($"Игрок c Id {player.Id} успешно разбанен"); | |
| } | |
| public void ShowAll() | |
| { | |
| var index = 0; | |
| foreach (var player in _playerList) | |
| { | |
| index++; | |
| Console.WriteLine($"{index}. {player}"); | |
| } | |
| } | |
| private int GetNewId() | |
| { | |
| if (_playerList.Count == 0) | |
| { | |
| return 1; | |
| } | |
| var maxId = _playerList.Max(o => o.Id); | |
| return maxId + 1; | |
| } | |
| private Player GetPlayerById() | |
| { | |
| Console.WriteLine("Введите id игрока:"); | |
| var idString = Console.ReadLine(); | |
| if (!int.TryParse(idString, out var id)) | |
| { | |
| Console.WriteLine($"Некорректный Id: {id}"); | |
| return null; | |
| } | |
| var player = _playerList.FirstOrDefault(o => o.Id == id); | |
| if (player == null) | |
| { | |
| Console.WriteLine($"Игрок c Id {id} не найден"); | |
| return null; | |
| } | |
| return player; | |
| } | |
| } | |
| public class Player | |
| { | |
| public static int DefaultLevel = 0; | |
| public int Id {get;} | |
| public string Nick {get; set; } | |
| public int Level { get; set; } | |
| public bool IsBan { get; set; } | |
| public Player(int id, string nick, int level) | |
| { | |
| Id = id; | |
| Nick = nick; | |
| Level = level; | |
| } | |
| public override string ToString() | |
| { | |
| return $"Id: {Id},\t Nick: {Nick.PadRight(15)}, Level: {Level},\t IsBan: {IsBan}"; | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment