Как мне правильно написать код

Всем привет. Нужна помощь от владеющих C#.

Я пишу программу которая выводит на экран рандомный комплект для игры COD: Modern Warfare 2019. В комплекте есть перки - и один из них влияет на комплект (остальные на геймплей). Соответственно программа выводит рандомные перки (а также их описание). Вопрос - как мне лучше реализовать? Через ООП или через Dictionary<string, string> (в первом string название перка, во втором его описание). Привожу фрагмент кода, дабы вам стало понятнее

Я пока реализовал только через ООП. Спрашиваю, потому способ через ООП занимает много строк и мне кажется это не очень хорошо

public class Perk { public string name; public string desc; public bool haveInfluence; public Perk(string Name, string Desc, bool have_Influence) { name = Name; desc = Desc; have_Influence = haveInfluence; } }
class Program { //объект, создающий случайные числа static Random rand = new Random(); static int rnd = 0; //синие перки static Perk OverKill = new Perk("Фора", "Позволяет носить два основных оружия.", true); static Perk QuickFix = new Perk("Быстрое лечение", "За убийство врагов, захват и удержания целей скорость восстановления здоровья будет увеличена.", false); static Perk Cold_Blooded = new Perk("Хладнокровный", "Вы становитесь невидимым для системы прицеливания ИИ и тепловизоров, а также невосприимчивым к «Сканирующей гранате».", false); static Perk E_O_D = new Perk("Сапёр", "Снижает урон от взрывчатых веществ и огня, не являющихся киллстриками. Позволяет взламывать вражеские «Клейморы», противопехотные мины, C4 и систему активной защиты.", false); static Perk DoubleTime = new Perk("Бегом марш!", "Удваивает продолжительность тактического бега. Увеличивает скорость передвижения на 30% во время приседания.", false); static Perk[] bluePerks = { OverKill, QuickFix, Cold_Blooded, E_O_D, DoubleTime }; //красные перки static Perk Restock = new Perk("Пополнение", "Восстанавливает снаряжение за 30 секунд после использования.", false); static Perk Hardline = new Perk("Упрямец", "Киллстрик стоит на одно убийство меньше.", false); static Perk High_Alert = new Perk("Бдительность", "Экран начинает мигать, когда враги видят вас за пределами вашего поля зрения.", false); static Perk Ghost = new Perk("Призрак", "БПЛА, радиолокационные БПЛА и датчики сердцебиения не смогут вас обнаружить. Также скрывает маркеры убитых вами врагов.", false); static Perk KillChain = new Perk("Массовое убийство", "Убийства, совершенные каким-нибудь киллстриком, засчитываются для получения следующей серии убийств. Относится только к киллстрикам в рамках одной жизни.", false); static Perk PointMan = new Perk("Дозорный", "Превращает серию убийств в серию очков.", false); static Perk[] redPerks = { Restock, Hardline, High_Alert, Ghost, KillChain, PointMan }; //желтые перки static Perk TuneUp = new Perk("Настройка", "Снижает время зарядки полевых модификаций на 33%.", false); static Perk Amped = new Perk("Прокачка", "Увеличивает скорость смены оружия и скорость перезарядки ракетной установки.", false); static Perk Shrapnel = new Perk("Шрапнель", "При возрождении даёт вам дополнительную единицу летального снаряжения. Урон, нанесённый при помощи взрывчатки, замедляет регенерацию здоровья у врагов.", false); static Perk BattleHardened = new Perk("Ветеран", "Сила воздействия вражеских эффектов вспышки, оглушения и ЭМИ снижается.", false); static Perk Spotter = new Perk("Наблюдатель", "Позволяет видеть вражеское снаряжение, полевые модификации и киллстрики сквозь стены. При прицеливании вы можете помечать их для своей команды.", false); static Perk Tracker = new Perk("Следопыт", "Враги будут оставлять за собой следы. Также позволяет видеть метки на местах смерти врагов и скрывать их.", false); static Perk[] yellowPerks = { TuneUp, Amped, Shrapnel, BattleHardened, Spotter, Tracker }; static void Main(string[] args) { ChooseRandomPerk(); } static void ChooseRandomPerk() { rnd = rand.Next(0, bluePerks.Length); for(int i = 0; i < bluePerks.Length; i++) { if(rnd == i) { Console.WriteLine("Голубые перки"); Console.WriteLine(bluePerks[i].name); Console.WriteLine("Описание - " + bluePerks[i].desc); } } rnd = rand.Next(0, redPerks.Length); for (int i = 0; i < redPerks.Length; i++) { if (rnd == i) { Console.WriteLine("Красные перки"); Console.WriteLine(redPerks[i].name); Console.WriteLine("Описание - " + redPerks[i].desc); } } rnd = rand.Next(0, yellowPerks.Length); for (int i = 0; i < yellowPerks.Length; i++) { if (rnd == i) { Console.WriteLine("Желтые перки"); Console.WriteLine(yellowPerks[i].name); Console.WriteLine("Описание - " + yellowPerks[i].desc); } } } }
7
20 комментариев