Estou na fase de planejamento de um pequeno jogo estilo RPG.
O personagem terá um conjunto de atributos, como força, agilidade, etc, que são representados como números inteiros. O personagem também terá um conjunto de ataques representados como uma classe de ataque.
Em cada ataque, quero que ele cause dano com base nos atributos dos personagens, por exemplo: o ataque "golpe de espada" fará 10 dmg + o valor da força dos personagens.
O jeito que eu estava pensando em fazer isso é ter uma classe de ataque abstrata, que tem um método de ataque abstrato, e para cada ataque eu crio uma classe que implementa o método de ataque.
public class SwordSlash:Attack
{
public void Attack(Character attacker, Character defender)
{
defender.DoDamage(10 + attacker.Strength);
}
}
Vejo que isso tornará um pesadelo para manter.
Alguém tem uma idéia de como eu posso fazer isso de uma maneira melhor?
O que eu acho que é o principal problema é como inserir o atributo correto, com base no ataque.
fonte
Você deseja ler Objetos agregados por meio de componentes e construção de objetos de jogo Rabbit Hole , no blog Replica Island .
fonte
Eu teria uma classe de armas que possui um método de ataque que você substitui pelo comportamento que deseja. Você também pode lidar com a aparência da arma no jogo, no inventário, quanto ela vende etc. na mesma classe.
fonte
Eu sou realmente novo nisso, mas o jeito que eu faria isso é criar uma classe de ataque genérica.
Quando uma instância de personagem deseja atacar outra, ela criará uma instância da classe de ataque, preenchida com os dados necessários e o ID do personagem que a criou. Os ajustes de equipamento seriam aplicados ao objeto de ataque, usando dados que poderiam ser inseridos em um documento xml ou similar.
Essa instância de classe seria agrupada dentro de outra classe, para fornecer ganchos para o ambiente determinar o alcance ou similar. Se o ataque for válido, a instância do ataque será passada ao personagem que está sendo atacado, que aplicará os efeitos.
Espero que isso faça sentido.
fonte