Estoy implementando un sistema básico de habilidades y atributos, aunque tengo dudas sobre cómo debo hacerlo.
Por ejemplo, podría usar un Dictionary / HashMap que usa enumeraciones SkillType para representar claves y valores enteros que representan los valores. ¿Pero debería hacer esto?
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
}
Me gustaría conocer los beneficios de la seguridad de tipos aquí, en lugar de usar enteros básicos. ¿Alguna recomendación?
interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };
, en realidad ...Respuestas:
Si finalmente va a haber:
entonces empiezo a preferir la flexibilidad de las cadenas o las teclas enteras en un diccionario en lugar de los campos de instancia individuales o incluso un diccionario con una clave enum.
Mi razonamiento ... Porque pronto te darás cuenta ...
... en ese momento, un diccionario con cadenas o claves enteras se convierte en un ajuste más natural que tener que mantener los valores de enumeración o una larga lista de campos de instancia usted mismo. Sin embargo, dicha herramienta siempre podría escribirse para generar código C # también, por lo que puede encontrar un híbrido feliz.
Si la complejidad de su juego será bastante simple y su variedad de habilidades es pequeña, entonces administrar los campos de instancia a mano (en lugar de diccionario y enumeración) parece más conveniente y evita un nivel de indirección, tanto en tiempo de ejecución como "pulsación de tecla" - hora.
fuente