Android Open Source - ANA A N A Juego






From Project

Back to project page ANA.

License

The source code is released under:

GNU General Public License

If you think the Android project ANA listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.guimi.ANA;
/*//  w ww  .j  a  v a 2s . co  m
 * Copyright (c) 2004-2010 Luis Miguel Armendriz
 * http://guimi.net
 * 
 * Est permitido copiar, distribuir y/o modificar
 * los desarrollos bajo los trminos de la
 * GNU General Public License, Versin 2
 * 
 * Para obtener una copia de dicha licencia
 * visite http://www.fsf.org/licenses/gpl.txt.
 * 
 */

import android.provider.Settings.Secure;
import net.guimi.ANA.AcelerometroGestor;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.PowerManager;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

/**
 * ANA: Ataque Nuclear Androide
 * ANA: Android Nuclear Attack
 * 
 * Tpico juego de aviones/naves en el que el jugador debe dispara a (casi)todo lo
 *   que ve.
 * 
 * @author guimi
 *
 */
public class ANAJuego extends Activity implements AcelerometroInterfaz {
    // Gestin de energa para evitar que a mitad juego se bloquee el dispositivo
    //+  por no estar en uso (porque no se pulsan teclas)
  protected PowerManager.WakeLock miWakeLock;
    private String android_id;

  // Definimos los identificadores de los diferentes dilogos a mostrar
  static final int DIALOGO_SALIR = 1;

    /** Variable auxiliar para gestionar la vista principal */
  private Pantalla miPantalla;
    /** Variable auxiliar para guardar nuestro contexto.
     * Podra sustituirse por getContext() */
    private static Context miContexto;

    // Esta variable nos permite identificar el estado (Bundle) de la aplicacin
    //  a la hora de guardarlo y cargarlo
    //private static String nombreEstado = "ANA-guimi";
    /** Variable auxiliar que indica la versin de la aplicacin */
    private static String versionAplicacion;
    
  
    /**
     * Sobreescribimos la funcin de creacin de la actividad. 
     */
    @Override
    public void onCreate(Bundle miEstadodeInstancia) {
        super.onCreate(miEstadodeInstancia);
        // Obtenemos datos enviados en el "fardo" (Bundle) por la actividad padre 
        Bundle miBundle = this.getIntent().getExtras();
        // Esta variable nos indica si debemos usar sonido
        versionAplicacion = miBundle.getString("versionAplicacion");
        
        // Necesitaremos el contexto para el acelermetro
        miContexto = this;
        android_id = Secure.getString(miContexto.getContentResolver(), Secure.ANDROID_ID);
        // En el emulador android_id == null
        if (android_id == null) android_id = "ANA_emulador";

        //scoreNinjaAdapter = new ScoreNinjaAdapter(miContexto, "ana-androidnuclearattack", "4099FBE1133A4DC0A743BDDD736B721C");

        // Gestin de energa
      final PowerManager miPowerManager = (PowerManager)miContexto.getSystemService(Context.POWER_SERVICE);
      miWakeLock = miPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "ANAJuego");
      miWakeLock.acquire();

        // Generamos nuestra pantalla de juego
        miPantalla = new Pantalla(this);
        miPantalla.leePreferencias();
        miPantalla.ponAndroid_id(android_id);
        miPantalla.ponVersionAplicacion(versionAplicacion);
        //miPantalla.ponModoJuego(Pantalla.MODO_EN_MARCHA);
        
        // Cargamos nuestra vista (nuestra pantalla de juego) 
        setContentView(miPantalla);

        /*
        // Si el estado es nulo, se acaba de crear la actividad
        if (miEstadodeInstancia == null) {
            // Configuramos un nuevo juego
        } else {
            // Venimos de una pausa
            Bundle mapa = miEstadodeInstancia.getBundle(nombreEstado);
            if (mapa != null) {
              //miPantalla.recuperaEstado(mapa);
            } else {
              //miPantalla.ponModoJuego(Pantalla.PAUSA);
            }
        }
        */
    }
    

    /**
     * Sobreescribimos la funcin onPause para que se pause el juego
     *  al pausarse la actividad. 
     */
    @Override
    protected void onPause() {
        super.onPause();
        // Desbloqueamos el gestor de energa
        if (miWakeLock.isHeld()) {
          miWakeLock.release();
        }
        if (miPantalla.leeModoJuego() == Pantalla.MODO_EN_MARCHA) miPantalla.ponModoJuego(Pantalla.MODO_PAUSA);
    }
    
    /** Al ponerse en marcha la aplicacin lanzamos la interfaz */
    @Override
    protected void onResume() {
        super.onResume();
        // Bloqueamos el gestor de energa
        miWakeLock.acquire();
        // Conectamos el interfaz del acelermetro
        if (AcelerometroGestor.estaSoportado(miContexto)) {
          AcelerometroGestor.iniciaInterfaz(this, miContexto);
        }
    }
 
    /** Al pararse la aplicacin paramos la interfaz */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // Desbloqueamos el gestor de energa
        if (miWakeLock.isHeld()) {
          miWakeLock.release();
        }
        // Desconectamos el interfaz del acelermetro
        if (AcelerometroGestor.estaFuncionando()) {
          AcelerometroGestor.paraInterfaces();
        }
     }


    /**
     * Sobreescribimos la funcin onSaveInstanceState para que se guarde el
     *  estado del juego al guardarse el estado de la actividad. 
     */
    // TODO
    /*
    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putBundle(nombreEstado, miSerpienteVista.guardaEstado());
    }
    */

    //************************************************************************
    //       PULSACIONES DE TECLAS DE SISTEMA (BACK, MENU...)
    //************************************************************************
    /**
     * Sobreescribimos la funcin onKeyDown para capturar la tecla "back"
     * y redirigir al dilogo "Salir"
     */
    @Override public boolean onKeyDown(int idTecla, KeyEvent evento) {
      if (idTecla == KeyEvent.KEYCODE_BACK) {
          // Capturamos al tecla "back"
        // Si el juego est en marcha, hacemos una pausa
        if (miPantalla.leeModoJuego() == Pantalla.MODO_EN_MARCHA) {
          miPantalla.ponModoJuego(Pantalla.MODO_PAUSA);
        } else if (miPantalla.leeModoJuego() == Pantalla.MODO_FIN) {
              this.finish();
        } else {
          showDialog(DIALOGO_SALIR);
        }
      } else if (idTecla == KeyEvent.KEYCODE_MENU) {
          // Capturamos al tecla "menu"
          // Si el juego est en marcha, hacemos una pausa
          if (miPantalla.leeModoJuego() == Pantalla.MODO_EN_MARCHA) {
            miPantalla.ponModoJuego(Pantalla.MODO_PAUSA);
          }

          // Propagamos la pulsacin de la tecla, para que cumpla sus funciones
          return false;
    }
 
      // Si no hemos gestionado el evento de tecla, lo propagamos
      return false;
    }
    
    //************************************************************************
    //       MENU
    //************************************************************************
    /**
     * Sobreescribimos la funcin onCreateOptionsMenu para aadir nuestro men
     */
    @Override
    public boolean onCreateOptionsMenu(Menu miMenu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_juego, miMenu);
        return true;
    }

    /**
     * Sobreescribimos la funcin onOptionsItemSelected para incluir opciones
     * en el men
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
          case R.id.menuJuegoJugar:
            miPantalla.leePreferencias();
            if (miPantalla.leeModoJuego() == Pantalla.MODO_PAUSA) {
              miPantalla.ponModoJuego(Pantalla.MODO_EN_MARCHA);
            } else if (miPantalla.leeModoJuego() == Pantalla.MODO_FIN) {
              miPantalla.iniciaJuego();
            }
            break;
          case R.id.menuJuegoPreferencias:
            Intent actividadPreferencias = new Intent(getBaseContext(), Preferencias.class);
            startActivity(actividadPreferencias);
            break;
            case R.id.menuJuegoSalir:
            if (miPantalla.leeModoJuego() == Pantalla.MODO_FIN) {
                  this.finish();
            } else {
              showDialog(DIALOGO_SALIR);
            }
              // Si el juego est en pausa (bien porque lo estaba, bien porque la acabamos
              //   de poner, solicitamos confirmacin para salir
              //if (miSerpienteVista.leeModoJuego() == SerpienteVista.PAUSA) {
                showDialog(DIALOGO_SALIR);
              //} else {
                // Si el juego no est pausado (principio o final de juego) salimos sin ms
                  //this.finish();
              //}
              break;
        }
        return true;
    }


    //************************************************************************
    //       DI??LOGOS
    //************************************************************************
  /**
   *  Funcin de creacin de dilogos llamada desde showDialog
   * 
   */
  protected Dialog onCreateDialog(int idDialogo) {
      Dialog miDialogo = null;
      
      switch(idDialogo) {
        case DIALOGO_SALIR:
          // Generamos un constructor para el dilogo "Salir"
        AlertDialog.Builder dialogoSalir = new AlertDialog.Builder(this);
        dialogoSalir.setMessage(R.string.menuSalirTexto_Jugando)
          .setCancelable(false)
          .setPositiveButton(R.string.menuBotonSi, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface miDialogo, int id) {
              finish();
                  }
          })
          .setNegativeButton(R.string.menuBotonNo, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface miDialogo, int id) {
              miDialogo.cancel();
            }
          });
        AlertDialog miDialogoSalir = dialogoSalir.create();
        // Titulo del dilogo
        miDialogoSalir.setTitle(R.string.menuSalirTitulo);
        // Icono para el dilogo
        miDialogoSalir.setIcon(R.drawable.icono);
        // Asignamos el dilogo recien creado al que devolver la funcin
        miDialogo=miDialogoSalir;          
          break;
        default:
          miDialogo = null;
      }
      return miDialogo;
  }

  
    //************************************************************************
    //       INTERFAZ ACELERMETRO
    //************************************************************************
    /** Funcin que se lanza al detectarse un cambio en el acelermetro **/
  public void onAcelerometroCambio(float x, float y, float z) {
    miPantalla.mueveHeroeAcel(-x, y);
  }

    /** Funcin que se lanza al detectarse una agitacin **/
  public void onAcelerometroAgitacion(float fuerza) {
    ;
  }

    /** Funcin que se lanza al detectarse una agitacin instantnea **/
  public void onAcelerometroAgitacionInstantanea(float fuerza) {
    ;
  }

}




Java Source Code List

net.guimi.ANA.ANAHilo.java
net.guimi.ANA.ANAJuego.java
net.guimi.ANA.ANA.java
net.guimi.ANA.AcelerometroGestor.java
net.guimi.ANA.AcelerometroInterfaz.java
net.guimi.ANA.Grafico.java
net.guimi.ANA.Pantalla.java
net.guimi.ANA.Preferencias.java
net.guimi.ANA.Puntos.java
net.guimi.ANA.Puntuaciones.java
net.guimi.ANA.SQLiteGestor.java
net.guimi.ANA.Splash.java
net.guimi.ANA.Tienda.java
net.guimi.ANA.Web.java