Enum Vs. Цілість для знань майстерності


10

Я впроваджую основну систему навичок та атрибутів, хоча я маю другу думку про те, як мені це робити.

Наприклад, я міг би використовувати словник / HashMap, який використовує перерахунки SkillType для представлення ключів і цілих значень, що представляють значення. Але чи варто це робити?

public class Skills
{
    public IDictionary<StatType, Int> skills; //StatType is enum, being the key; the int //is the value.

}

vs.

public class Skills
{
    public int LongBlade, Armor, Marksman; //...etc
}

Я хотів би знати переваги безпеки типу тут, а не просто використання основних цілих чисел. Будь-які рекомендації?


Я вважаю за краще interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };, насправді ...
Мартін Сойка

Відповіді:


8

Якщо зрештою буде:

  • велика кількість видів навичок у вашій грі,
  • або предметів, що надають можливість
  • або прихильників,
  • або велике дерево здібностей,

тоді я починаю віддавати перевагу гнучкості рядкових або цілих клавіш у словнику замість окремих полів екземпляра або навіть словника з ключем enum.

Мої міркування ... Тому що ви незабаром можете зрозуміти ...

Хлопчик, було б непогано, якби я зміг налаштувати свій математичний інструмент і вибрати здібності підрозділу (мій улюблений редактор тексту | Excel | спеціальний інструмент)

... в цей момент словник із рядковими чи цілими клавішами стає більш природним, ніж необхідність самостійно підтримувати значення перерахунків або довгий список полів екземплярів. Однак зазначений інструмент завжди може бути написаний для створення C # коду, так що ви, можливо, зможете знайти щасливий гібрид.

Якщо ваша складність гри буде досить простою, а різноманітність вмінь невеликою, то керування полями екземплярів вручну (замість словника та перерахунку) здається більш зручним і дозволяє уникнути рівня непрямості, як під час виконання, так і під час натискання клавіші - час.


Що ти маєш на увазі під одиничними здібностями та математикою? Я не зовсім слідкую, принаймні в цьому плані. Я хотів би використати перелік, якщо це практично.
blissfreak

Я частково погоджуюся з вами: рядки чудово підходять до вищих рівнів (наприклад, сценарій API), але переміщення рядків навколо не є хорошою ідеєю (пам'ять та час переміщення обмежують максимальну кількість опій, які ви можете зробити за кадр). Бути гібридним може бути варіант: названі об'єкти з цілими ідентифікаторами. Імена мають бути збережені один раз (можливо, в одиночній карті), і об'єкти ідентифікують себе за допомогою цілих чисел. Таким чином, ви можете помістити рядки у свої інтерфейси, якщо це потрібно, і працювати так, ніби вони були перерахунками.
FxIII

@fxiii Я згоден, і тому я згадав "рядок або ціле число". Я не вдавався в деталі, тому дякую, що ви зрозуміли, чому і як щодо використання цілих чисел.
DuckMaestro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.