Anuncios

Bienvenidos sean a este post, hoy veremos el diseño de los elementos en el juego.

Anuncios

Los edificios son muy similares a las unidades, tal como mencionamos en este post, porque tambien tienen puntos de vida, ya que pueden ser destruidos, pero tambien poseen tiempo de construccion asi como tambien de creacion de una unidad. Por lo tanto, usaremos el mismo concepto y lo primero que definiremos es una interfaz para ser utilizada como base para todos los edificios:

class IEdificio
{
public:
  virtual void ataque(const Unidad&) = 0;
  virtual void destruir() = 0;
  virtual void construir(Unidad*) = 0;
  virtual int get_puntos_vida() const = 0;
};
Anuncios

Es muy similar a lo visto en el post anterior, donde tenemos un metodo para cada vez que recibe un ataque, asi como tambien el de destruccion y el encargado de conseguir la vida o durabilidad del edificio antes de ser destruido pero tenemos un metodo propio. En este caso, es el de la construccion del edificio. Al igual que vimos en el post anterior, tambien usaremos a la interfaz para que el mismo metodo pueda utilizar cualquier unidad y no tener que referenciar cada unidad en caso de de ser necesario. Esta servira como base para la casa, barraca o libreria tal como vimos para las unidades. Veamos como seria una clase para un edificio:

class Barraca : public IEdificio
{
public:
  void ataque(const Unidad& atacante) override {
    restar_puntos_vida(atacante.get_poder());
  }

  void destruir() override {
    // Por ahora lo dejamos en blanco
  }

  void construir(Unidad* trabajador) override {
    // contruccion del edificio
  }

  int get_puntos_vida() const override {
    return puntos_vida_;
  }

private:
  int puntos_vida_;
  int capacidad_;
  std::chrono::duration<int> duracion_construccion_;
};
Anuncios
Anuncios

Es muy similar a lo visto en el post anterior, donde definiremos los metodos abstractos de la interfaz asi como tambien tenemos las propiedades del edificio en cuestion. Pero esto es algo completamente generico y a su vez nos falta algunos metodos, como por ejemplo el encargado de restar los puntos de vida pero no deja de ser igual al visto en la clase del lector. Pero tenemos dos propiedades curiosas, como son la capacidad, recuerden que en este post mencionamos que cada edificio tendra una cierta capacidad para almacenar unidades y el otro es el tiempo que usara para generar su respectiva unidad. Como podemos ver y mencionamos, este es muy similar al diseño de unidades y por lo tanto, pueden compartir elementos en comun como son variables y funciones externas a la clase. Con el post anterior y este cubrimos como se pueden diseñar las unidades y edificios pero en el proximo post veremos como hacer que interactuen entre ellas.

Anuncios

En resumen, hoy hemos visto el diseño de los edificios, de forma muy teorica, pero con sus multiples coincidencias con respecto a las unidades, asi como otros temas a tener en cuenta. Espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50