Desprende y Ataca

Código para desprenderse de la formación y atacar al azar.

Comienzo con la enumeración «enum» de los posibles estados del objeto. Esto sigue aumentando dependiendo de la función necesaria.

public enum EnemyState {
    BERTHING,        // Comenzando.
    BERTHING_ANGLE,  // Moviéndose al ángulo.
    BERTHING_RADIUS, // Moviéndose al radio.
    BERTH,           // Está anclado.
    DROPPING,        // Bajando a la siguiente posición.
    ATTACKING,
    FLEEING,
    FLED
}

«Dropping» lo uso para mover el objeto cuando el espacio de abajo está disponible con este código:

if (berth.column != 0) {
  Berth lowerBerth = spacedock.berth[berth.row][berth.column - 1];
  if (!lowerBerth.reserved) {
    lowerBerth.reserved = true;
    berth.reserved = false;
    berth = lowerBerth;
    state = EnemyState.DROPPING;
   }
 }

130: Si no estoy en el ultimo espacio, busco el espacio de abajo en la linea 131.
132: Verifica si ese espacio de abajo esta ocupado. Si está libre, desocupo el actual y ocupo el nuevo en las lineas 133-134.

Esto hace que todos los objetos que ocupan esa columna bajen en el momento que un espacio mas bajo se hace disponible.

Desprende y ataca.

El estado de «Attacking» puede ocurrir de dos maneras. Un enemigo puede comenzar atacando («Berthing» -> «Attacking») o puede cambiar de anclado a atacar («Berth» -> «Attacking»).

Para comenzar el ataque solo llamo el método de attack() del objeto:

public void attack() {
  if (berth != null) berth.reserved = false;
  state = EnemyState.ATTACKING;
  attackRadius = spacedock.attackRadius;
  attackAngle = normalizeAngle(MathUtils.random(MathUtils.PI2));
}

205: Aseguro cancelar la reserva del espacio en la formación.
207: «AttackRadius» es más bajo o cercano al jugador que todos los espacios en la formación.
208: El ángulo de ataque se escoge al azar alrededor del planeta.

Y así se ve:

Únete a otros 36 suscriptores

Deja una respuesta

Anuncios


Consola en pantalla 

Algo que siempre he querido tener es la consola visual en pantalla. Lo encuentro útil porque puedo ver el evento directo sin tener que desviar la mirada hacia la consola.

Continua Leyendo…
Anuncios