Created
July 17, 2024 17:40
-
-
Save QRemark/07ef04456201e683cf289e2edcb3b79f 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.Linq; | |
namespace Linq | |
{ | |
internal class Program | |
{ | |
static void Main(string[] args) | |
{ | |
SoldierFactory soldierFactory = new SoldierFactory(); | |
Army army = new Army(soldierFactory); | |
army.Work(); | |
} | |
} | |
class Army | |
{ | |
private List<Soldier> _platoonAlpha; | |
private List<Soldier> _platoonBetta; | |
private string _litera = "Б"; | |
public Army(SoldierFactory soldierFactory) | |
{ | |
_platoonAlpha = soldierFactory.CreatePlatoonAlfa(); | |
_platoonBetta = soldierFactory.CreatePlatoonBetta(); | |
} | |
public void Work() | |
{ | |
const string CommandShowPlatoons = "1"; | |
const string CommandMakeTransfer = "2"; | |
const string CommandExit = "3"; | |
bool isRunning = true; | |
string userInput; | |
while (isRunning) | |
{ | |
Console.WriteLine("Добро пожаловать в отчет о вооружении! \nВам доступно: "); | |
Console.WriteLine($"{CommandShowPlatoons} - посмотреть списоки отрядов"); | |
Console.WriteLine($"{CommandMakeTransfer} - произвести перевод на букву {_litera}"); | |
Console.WriteLine($"{CommandExit} - выйти из приложения"); | |
Console.Write("Выберите действие: "); | |
userInput = Console.ReadLine(); | |
switch (userInput) | |
{ | |
case CommandShowPlatoons: | |
ShowShowPlatoons(); | |
break; | |
case CommandMakeTransfer: | |
MakeTransfer(); | |
break; | |
case CommandExit: | |
isRunning = false; | |
break; | |
default: | |
UserUtils.HandleInvalidInput(); | |
break; | |
} | |
Console.Clear(); | |
} | |
Console.WriteLine("Всего доброго! \nДля закрытия приложения нажмите любую кнопку..."); | |
Console.ReadKey(); | |
} | |
private void Show(List<Soldier> soldiers) | |
{ | |
int number = 1; | |
UserUtils.ShowLine(); | |
foreach (var soldier in soldiers) | |
{ | |
Console.Write(number++ + ") "); | |
soldier.ShowStats(); | |
} | |
UserUtils.ShowLine(); | |
} | |
private void MakeTransfer() | |
{ | |
Console.WriteLine($"Вы решили перевести бойцов на букву {_litera} во второй отряд "); | |
var soldiersToTransfer = _platoonAlpha.Where(soldier => soldier.Name.StartsWith(_litera)).ToList(); | |
_platoonAlpha = _platoonAlpha.Except(soldiersToTransfer).ToList(); | |
_platoonBetta = _platoonBetta.Union(soldiersToTransfer).ToList(); | |
Console.WriteLine("ВЫ перели солдат! Вот результат: "); | |
ShowShowPlatoons(); | |
} | |
private void ShowShowPlatoons() | |
{ | |
Console.WriteLine("Вы выбрали посмотреть списки всех солдат: "); | |
Console.WriteLine("Отряд 1"); | |
Show(_platoonAlpha); | |
Console.WriteLine("Отряд 2"); | |
Show(_platoonBetta); | |
Console.WriteLine("Для продолжения нажмите любую клавишу..."); | |
Console.ReadKey(); | |
} | |
} | |
class SoldierFactory | |
{ | |
public List<Soldier> CreatePlatoonBetta() | |
{ | |
List<Soldier> soldiers = new List<Soldier> | |
{ | |
new Soldier("Иванов", "пистолет", "майор", 150), | |
new Soldier("Петров", "штурмовая винтовка", "полковник", 110), | |
new Soldier("Сидоров", "пистолет-пулемет", "сержант", 20), | |
new Soldier("Савельев", "РПГ", "рядовой", 7), | |
new Soldier("Морозова", "пулимет", "сержант", 10), | |
new Soldier("Пушкина", "снайперская винтовка", "младший сержант", 7), | |
new Soldier("Ложная", "автомат", "рядовой", 3), | |
}; | |
return new List<Soldier>(soldiers); | |
} | |
public List<Soldier> CreatePlatoonAlfa() | |
{ | |
List<Soldier> soldiers = new List<Soldier> | |
{ | |
new Soldier("Иванов", "пистолет", "майор", 150), | |
new Soldier("Буйнов", "штурмовая винтовка", "полковник", 110), | |
new Soldier("Брайно", "пистолет-пулемет", "сержант", 20), | |
new Soldier("Савельев", "РПГ", "рядовой", 7), | |
new Soldier("Морозова", "пулимет", "сержант", 10), | |
new Soldier("Булатов", "снайперская винтовка", "младший сержант", 7), | |
new Soldier("Борн", "автомат", "рядовой", 3), | |
}; | |
return new List<Soldier>(soldiers); | |
} | |
} | |
class Soldier | |
{ | |
public Soldier(string name, string weapon, string rank, int date) | |
{ | |
Name = name; | |
Weapon = weapon; | |
Rank = rank; | |
Date = date; | |
} | |
public string Name { get; private set; } | |
public string Weapon { get; private set; } | |
public string Rank { get; private set; } | |
public int Date { get; private set; } | |
public void ShowStats() | |
{ | |
Console.WriteLine($"Имя: {Name}, Вооружение: {Weapon}, Звание: {Rank}, Срок службы: {Date} месяцев"); | |
} | |
} | |
static class UserUtils | |
{ | |
public static void HandleInvalidInput() | |
{ | |
Console.Clear(); | |
Console.WriteLine("Команда не была распознана, нажмите любую клавишу для продолжения..."); | |
Console.ReadKey(); | |
} | |
public static void ShowLine() => Console.WriteLine("\n** " + new string('-', 40) + " **"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment