ArkaLlop - Clon del Arkanoid

Llop Site Home > JAVA > ArkaLlop > ArkaLlop

ArkaLlop:

Clase ArkaLlop 

package arkallop;

import java.awt.*;
import java.io.*;
import java.net.*;
import javax.sound.sampled.*;
import javax.swing.*;

/** 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 */

/** Clase principal del programa. */
public class ArkaLlop extends JApplet
{
  // Fuente para casi todos los componentes del juego.
  private static Font fuenteBeyondWonderland;
  // Inicializamos la fuente de forma estática.
  static
  {
    try
    {
      fuenteBeyondWonderland =
          Font.createFont (Font.TRUETYPE_FONT,
                          ArkaLlop.class.getResourceAsStream
                                   ("rscArkaLlop/Beyond Wonderland.ttf")).deriveFont (35F);
    } catch (Exception e) { error ("Error al cargar la fuente 'Beyond Wonderland'."); }
  }
  private Partida partida;
  private PantallaMenu pntMenu;
  private PantallaJuego pntJuego;

  /** Contructor del applet. */
  public ArkaLlop () {}

  /** Inicializa el applet. */
  public void init ()
  {
    try
    {
      SwingUtilities.invokeAndWait (new Runnable ()
      {
        public void run ()
        {
          inicializaComponentes ();
        }
      });
    } catch (Exception excepcion) {
      error ("Error al intentar arrancar el juego:");
      excepcion.printStackTrace ();
    }
  }

  /** Inicializa la partida para el applet, la pantalla de menú, y la de juego.
      Al principio la 'Pantalla' visible es la de menú. */
  private void inicializaComponentes ()
  {
    partida = new Partida (this);
    pntMenu = new PantallaMenu (partida);
    pntJuego = new PantallaJuego (partida);

    getContentPane ().add (pntMenu);
  }

  /** Añade a la pantalla de juego el botón que permite volver a la pantalla de menú. */
  public void anadeBotonFinPantalla ()
  {
    pntJuego.anadeBotonFin ();
  }

  /** Se llama a este método para cambiar de la pantalla de juego a la de menú. */
  public void cambioAMenu ()
  {
    partida.stopMusica ();                  // Paramos la música.
    pntJuego.setRefrescoConstante (false);  // La pantalla de juego deja de refrescarse.
    getContentPane ().remove (pntJuego);    // Quitamos la pantalla de juego del applet,
    getContentPane ().add (pntMenu);        // y ponemos la de menú.
    repaint ();                             // Repinta el applet.
  }

  /** Se llama a este método para cambiar de la pantalla de menú a la de juego. */
  public void cambioAJuego ()
  {
    partida.variablesPorDefecto ();        // Ajusta las variables por defecto de la partida.
    partida.cargaNivel ();                 // Carga el primer nivel.
    getContentPane ().remove (pntMenu);    // Quita la pantalla de menú,
    getContentPane ().add (pntJuego);      // y añade la de juego.
    validate ();                           // Valida los componentes.
    pntJuego.requestFocus ();              // La pantalla de juego debe tener el foco para capturar eventos.
    pntJuego.setRefrescoConstante (true);  // Queremos que la pantalla de juego se refreque todo el rato.
    partida.playMusica ();                 // Que suene la música de fondo.
  }

  /** Iniciar el applet. */
  public void start () {}

  /** Detener el applet. */
  public void stop () {}

  /** Destruir el applet. */
  public void destroy () {}

  /** Obtener información del applet: El nombre del autor. */
  public String getAppletInfo ()
  {
    return "Autor: Albert Lobo Cusidó, 2005";
  }

  /** Obtener información de los parámetros. No hay. */
  public String [][] getParameterInfo ()
  {
    return null;
  }

  /** Método estático que devuelve una imagen en el fichero de recursos.
      @param imagen String  Nombre del archivo de la imagen.
      @return Image         La imagen correspondiente del fichero de recursos. */
  public static Image getImagen (String imagen)
  {
    URL uRL = ArkaLlop.class.getResource ("rscArkaLlop/" + imagen) ;
    if (uRL == null)
    {
      System.err.println (imagen + " no encontrada.");
      return null;
    }
    return new ImageIcon (uRL).getImage ();
  }

  /** Método que devuelve un flujo de entrada para datos de audio.
      @param clip String        Nombre del archivo de audio.
      @return AudioInputStream  Flujo de datos de retorno. */
  public static AudioInputStream getFlujoAudio (String clip)
  {
    AudioInputStream retorno = null;
    URL uRL = ArkaLlop.class.getResource ("rscArkaLlop/" + clip);
    if (uRL == null)
    {
      error (clip + " no encontrado.");
      return null;
    }

    try
    {
      retorno = AudioSystem.getAudioInputStream (uRL);
    } catch (IOException ex) {
      error (clip + " no encontrado.");
    } catch (UnsupportedAudioFileException ex) {
      error (clip + " no puede sonar.");
    }
    return retorno;
  }

  /** Devuelve la fuente 'Beyond Wonderland'.
      @return Font  Instancia de la fuente. */
  public static Font getFuenteBeyondWonderland ()
  {
    return fuenteBeyondWonderland;
  }

  /** Escribe un mensaje de error en la consola de Java.
      @param mensaje String  El mensaje de error a escribir. */
  public static void error (String mensaje)
  {
    System.err.println (mensaje);
  }
}

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

Última actualización: 18-Feb-2007

Hosted by www.Geocities.ws

1