Как мне правильно написать код
Всем привет. Нужна помощь от владеющих 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);
}
}
}
}
20 комментариев