ArkaLlop - Clon del Arkanoid

Llop Site Home > JAVA > ArkaLlop > Fondos y bordes

Fondos y bordes:

Clase FondosPantalla

package arkallop;

import java.awt.*;

/** Título: ArkaLlop
    Descripción: Prácticas capítulo 11, ejercicio 4
    Copyright: Copyright (c) 2005
    Empresa: Casa_Llop
    @author Albert_Lobo
    @version 1.0 */

/** Otra clase 'librería' (no es necesario crear una instancia para acceder a su funcionalidad).
    Almacena y proporciona las imágenes disponibles como fondos de pantalla. */
public class FondosPantalla
{
  /** Constante que indica el total de fondos de pantalla disponibles. */
  public static final byte TOTAL_FONDOS = 4;

  /** Constante que representa el primer fondo. */
  public static final byte FONDO_0 = 0;
  /** Constante que representa el segundo fondo. */
  public static final byte FONDO_1 = 1;
  /** Constante que representa el tercer fondo. */
  public static final byte FONDO_2 = 2;
  /** Constante que representa el cuarto fondo. */
  public static final byte FONDO_3 = 3;

  /** Tabla en la que se almacenan los fondos de pantalla. */
  private static Image arrayImagenesBorde [];

  // Rellenamos el array de imágenes con los 4 fondos (en el fichero de recursos).
  static
  {
    arrayImagenesBorde = new Image [TOTAL_FONDOS];
    for (byte i = 0; i < TOTAL_FONDOS; i++)
      arrayImagenesBorde [i] = ArkaLlop.getImagen ("fondo" + i + ".jpg");
  }

  /** Devuelve una de las imágenes de fondo de pantalla.
      @param componente byte  Entero que representa el fondo (utilizar una de las constantes de la clase).
      @return Image           La imagen que se ha pedido. */
  public static Image getImagenFondo (byte componente)
  {
    return arrayImagenesBorde [componente];
  }
}



Clase FondosPantalla

package arkallop;

import java.awt.*;

/** Encapsula todas las imágenes y las animaciones propias de los bordes del escenario.
    Además, proporciona métodos que devuelven esas imágenes. */
public class BordesPantalla
{
  /** Constante que representa el total de imágenes no animadas de que consta el borde. */
  public static final byte TOTAL_BORDES = 4;

  /** Constante que representa los bordes derecho e izquierdo. */
  public static final byte BRD_LAD = 0;
  /** Constante que representa el borde superior. */
  public static final byte BRD_SUP = 1;
  /** Constante que representa el borde inferior. */
  public static final byte BRD_INF = 2;
  /** Constante que representa la puerta. */
  public static final byte PUERTA = 3;

  /** Tabla constante para los elementos no animados del borde. */
  private static Image arrayImagenesBorde [];

  /** Tabla constante para las imágenes de la animación de las vainas. */
  private static Image vaina [];
  /** Tabla constante que indica los fotogramas y el orden que siguen para completar la animación
      de las vainas. */
  private final static byte secuenciaVainas [] = new byte [] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                                              1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                              2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
  // Índice que indica el fotograma en la 'secuenciaVainas' a mostrar.
  private byte indiceAnimVainas;

  /** Tabla constante para las imágenes de la animación de la puerta abierta. */
  private static Image puertaAbierta [];
  /** Tabla constante que indica los fotogramas y el orden que siguen para completar la animación
      de la puerta abierta. */
  private final static byte secuenciaPuerta [] = new byte [] {0, 0, 0, 1, 1, 1, 2, 2, 2};
  // Índice que indica el fotograma en la 'secuenciaPuerta' a mostrar.
  private byte indiceAnimPuerta;

  /** Constructor. Pone los índices para las animaciones a cero. */
  public BordesPantalla ()
  {
    indiceAnimVainas = 0;
    indiceAnimPuerta = 0;
  }

  /** Devuelve el fotograma apropiado para la animación de las vainas.
      @return Image  Siguiente fotograma en la animación de las vainas. */
  public Image getVaina ()
  {
    // No podemos permitir que el índice marque una posición fuera del array.
    if (indiceAnimVainas == 36)
      indiceAnimVainas = 0;
    return vaina [secuenciaVainas [indiceAnimVainas++]];
  }

  /** Devuelve el fotograma apropiado para la animación de la puerta.
      @return Image  Siguiente fotograma en la animación de la puerta. */
  public Image getPuerta ()
  {
    // No podemos permitir que el índice marque una posición fuera del array.
    if (indiceAnimPuerta == 9)
      indiceAnimPuerta = 0;
    return puertaAbierta [secuenciaPuerta [indiceAnimPuerta++]];
  }

  /** Inicializaciones estáticas.
      Todas las imágenes se cargan aquí; ahora ya podemos olvidarnos de ellas. */
  static
  {
    byte i;
    // Las imágenes sin movimiento.
    arrayImagenesBorde = new Image [TOTAL_BORDES];
    for (i = 0; i < TOTAL_BORDES; i++)
      arrayImagenesBorde [i] = ArkaLlop.getImagen ("brd" + i + ".gif");
    // La animación de la vaina.
    vaina = new Image [3];
    for (i = 0; i < 3; i++)
      vaina [i] = ArkaLlop.getImagen ("vaina" + i + ".gif");
    // La animación de la puerta.
    puertaAbierta = new Image [3];
    for (i = 0; i < 3; i++)
      puertaAbierta [i] = ArkaLlop.getImagen ("puerta" + i + ".gif");
  }

  /** Método estático que devuelve una de las imágenes no animadas de los bordes.
      @param componente byte  Representa el elemento del borde cuya imagen queremos. Se debe utilizar
                              una de las constantes byte de esta misma clase.
      @return Image           La imagen del elemento del borde. */
  public static Image getImagenBorde (byte componente)
  {
    return arrayImagenesBorde [componente];
  }
}

¿Comentarios, sugerencias?: llopsite.at.yahoo.es | © 2005-07 Albert Lobo

Última actualización: 18-Feb-2007

Hosted by www.Geocities.ws

1