Ich implementiere ein grundlegendes Fähigkeits- und Attributsystem, obwohl ich mir Gedanken darüber mache, wie ich vorgehen soll.
Zum Beispiel könnte ich ein Dictionary / HashMap verwenden, das SkillType-Enums verwendet, um Schlüssel darzustellen, und ganzzahlige Werte, die die Werte darstellen. Aber soll ich das machen?
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
}
Ich möchte hier die Vorteile der Typensicherheit kennen, anstatt nur einfache Ganzzahlen zu verwenden. Irgendwelche Empfehlungen?
interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };
Eigentlich würde ich es vorziehen ...Antworten:
Wenn es irgendwann geben wird:
dann bevorzuge ich die Flexibilität von Zeichenfolgen- oder Ganzzahlschlüsseln in einem Wörterbuch anstelle einzelner Instanzfelder oder sogar eines Wörterbuchs mit einem Aufzählungsschlüssel.
Meine Argumentation - Weil Sie vielleicht bald erkennen werden ...
... an diesem Punkt wird ein Wörterbuch mit Zeichenfolgen- oder Ganzzahlschlüsseln natürlicher, als wenn Sie Enum-Werte oder eine lange Liste von Instanzfeldern selbst verwalten müssen. Dieses Tool kann jedoch immer auch zum Generieren von C # -Code geschrieben werden, sodass Sie möglicherweise einen glücklichen Hybrid finden können.
Wenn Ihre Spielkomplexität relativ einfach und Ihre Vielfalt an Fähigkeiten gering sein soll, erscheint die manuelle Verwaltung von Instanzfeldern (anstelle von Wörterbuch und Aufzählung) bequemer und vermeidet eine Indirektionsebene sowohl zur Laufzeit als auch beim "Tastendruck" - Zeit.
quelle