Estoy en la fase de planificación de un pequeño juego de estilo RPG.
El personaje tendrá un conjunto de atributos, como fuerza, agilidad, etc., que se representan como enteros. El personaje también tendrá un conjunto de ataques representados como una clase de ataque.
En cada ataque quiero que haga daño basado en los atributos de los personajes, por ejemplo: el ataque "corte de espada" hará 10 dmg + el valor de la fuerza de los personajes.
La forma en que pensaba hacer esto es tener una clase de ataque abstracta, que tiene un método de ataque abstracto, y para cada ataque creo una clase que implementa el método de ataque.
public class SwordSlash:Attack
{
public void Attack(Character attacker, Character defender)
{
defender.DoDamage(10 + attacker.Strength);
}
}
Veo que esto hará que sea una pesadilla mantenerlo.
¿Alguien tiene una idea de cómo puedo lograr esto de una manera más agradable?
Lo que creo que es el problema principal es cómo ingresar el atributo correcto, basado en el ataque.
fuente
Desea leer Objetos agregados a través de Componentes y Construcción de objetos de juego Rabbit Hole , del blog Replica Island .
fuente
Tendría una clase de arma que tiene un método de ataque que anula con el comportamiento que desea. También puedes controlar cómo se ve el arma en el juego, en el inventario, cuánto se vende, etc. en la misma clase.
fuente
Soy realmente nuevo en esto, pero la forma en que lo haría es crear una clase de ataque genérico.
Cuando una instancia de personaje quiere atacar a otra instancia de personaje, crearía una instancia de la clase de ataque, llena de los datos requeridos y la ID del personaje que la creó. Los ajustes del equipo se aplicarían al objeto de ataque, utilizando datos que podrían ingresarse en un documento xml o similar.
Esta instancia de clase se envolvería dentro de otra clase, para proporcionar enlaces para que el entorno determine el rango o similar. Si el ataque es válido, la instancia de ataque se pasaría al personaje que está siendo atacado, quien aplicaría los efectos.
Espero que tenga sentido.
fuente