Wdrażam podstawowy system umiejętności i atrybutów, choć zastanawiam się, jak powinienem to zrobić.
Na przykład, mógłbym użyć Dictionary / HashMap, która wykorzystuje wyliczenia SkillType do reprezentowania kluczy, a wartości całkowite reprezentują wartości. Ale czy powinienem to zrobić?
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
}
Chciałbym poznać zalety bezpieczeństwa typu, w przeciwieństwie do zwykłych liczb całkowitych. Jakieś rekomendacje?
interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };
...Odpowiedzi:
Jeśli w końcu będzie:
potem zaczynam preferować elastyczność ciągów znaków lub liczb całkowitych w słowniku zamiast pojedynczych pól instancji, a nawet słownika z kluczem wyliczającym.
Moje rozumowanie - bo może wkrótce zdasz sobie sprawę ...
... w tym momencie słownik z kluczami ciągów lub liczb całkowitych staje się bardziej naturalny niż konieczność samodzielnego utrzymywania wartości wyliczeniowych lub długiej listy pól instancji. Jednak wspomniane narzędzie zawsze można napisać, aby wygenerować kod C #, więc możesz znaleźć szczęśliwą hybrydę.
Jeśli złożoność gry będzie dość prosta, a różnorodność umiejętności niewielka, to ręczne zarządzanie polami instancji (zamiast słownika i wyliczania) wydaje się wygodniejsze i pozwala uniknąć poziomu pośrednictwa, zarówno w czasie wykonywania, jak i „naciśnięciu klawisza” - czas.
źródło