Estou implementando um sistema básico de habilidades e atributos, embora tenha dúvidas sobre como devo proceder.
Por exemplo, eu poderia usar um Dictionary / HashMap que usa enumerações SkillType para representar chaves e valores inteiros representando os valores. Mas devo fazer isso?
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
}
Gostaria de conhecer os benefícios da segurança de tipo aqui, em vez de usar apenas números inteiros básicos. Alguma recomendação?
interface Skill { /* ... */ int toInt(); }; public class Skills : IList { private ArrayList<Skill> skills; /* ... */ };
, na verdade ...Respostas:
Se eventualmente houver:
então começo a preferir a flexibilidade de cadeias de caracteres ou chaves inteiras em um dicionário, em vez de campos de instância individuais ou até mesmo um dicionário com uma chave enum.
Meu raciocínio ... Porque você logo perceberá ...
... nesse ponto, um dicionário com chaves de seqüência de caracteres ou números inteiros se torna um ajuste mais natural do que ter que manter os valores de enumeração ou uma longa lista de campos de instância. No entanto, a referida ferramenta sempre pode ser escrita para gerar código C # também, para que você possa encontrar um híbrido feliz.
Se a complexidade do seu jogo for bastante simples e sua variedade de habilidades for pequena, o gerenciamento manual dos campos de instância (em vez de dicionário e enum) parece mais conveniente e evita um nível de indireção, tanto em tempo de execução quanto em "pressionamento de tecla" - Tempo.
fonte