Anuncios

Bienvenidos sean a este post, en el post anterior hablamos sobre una clase llamada Soldado pero hoy veremos como aplicarla en un hipotetico juego de estrategia en tiempo real.

Anuncios
Nota: aunque este va a ser un "juego de estrategia en tiempo real" recuerden que no va a ser como tal sino que lo usaremos para entender algunos conceptos de las clases y los objetos creados desde la misma porque en un juego de estrategia no habra un solo soldado sino que tendremos de a montones 
Anuncios

Para comenzar vamos a generar un nuevo proyecto con las siguientes caracteristicas:

  • Dispositivos: Phone and Tablet
  • Actividad: Add No Activity
  • Nombre: Clases basicas
  • Nombre de paquete: org.example.clasesbasicas
  • API Minimo: API 14 (Android 4.0)
Anuncios

Una vez creado nuestro nuevo proyecto pasaremos a crear la clase mencionada en el post anterior, para ello iremos al contenedor de las clases de Java, haremos click con el boton derecho sobre el mismo y seleccionaremos New -> Java class

Anuncios

Nos aparecera un nuevo cuadro donde completaremos unos campos de la siguiente forma:

  • Nombre: Soldado
  • Tipo: Class
Anuncios

Con estos dos datos presionan Enter y se generara automaticamente nuestra nueva clase, una vez generado modificaremos el codigo creado en la clase por el siguiente:

Soldado.java

package org.example.clasesbasicas;

import android.util.Log;

public class Soldado {
    int salud;
    String tipoSoldado;

    void disparar(){
        Log.d(tipoSoldado,"esta disparando!");
    }
}
Anuncios
Anuncios

En este caso agregamos un paquete para la clase Log que luego usaremos, en la clase crearemos dos variables: una de tipo int para la salud del soldado y otra de tipo String para el tipo de soldado, luego tendremos una funcion que escribira en el log de la aplicacion cual tipo de soldado esta disparando, para nuestro siguiente paso volveremos a crear una nueva clase pero usaremos estos datos:

  • Nombre: RTSActivity
  • Tipo: Class
Anuncios

Igual que en el caso anterior despues de completar los datos presionen Enter para generarla, una vez creada nuestra clase modificaremos el codigo generado por el siguiente:

RTSActivity.java

package org.example.clasesbasicas;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class RTSActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        Soldado brown = new Soldado();
        Soldado chamame = new Soldado();
        Soldado cabral = new Soldado();

        brown.salud = 100;
        brown.tipoSoldado = "marino";
        chamame.salud = 110;
        chamame.tipoSoldado = "piloto";
        cabral.salud = 150;
        cabral.tipoSoldado = "soldado";

        Log.d("Salud de Brown = ", "" + brown.salud);
        Log.d("Salud de Chamame = ", "" + chamame.salud);
        Log.d("Salud de Cabral = ", "" + cabral.salud);

        brown.disparar();
        chamame.disparar();
        cabral.disparar();
    }
}
Anuncios
Anuncios

Esta clase la usaremos como principal para ello extendemos a Activity, luego sobreescribiremos a onCreate, tal como se hace siempre, usamos el super para corregir el error que nos genera, nuestro siguiente paso sera crear tres objeto de la clase Soldado, el siguiente paso sera definir la salud y el tipo de soldado para cada uno de ellos, despues tenemos un bloque donde por medio de Log.d mostramos la salud de cada uno de ellos y por ultimo los hacemos disparar, si lo ejecutamos veremos lo siguiente

Anuncios

Eh, que paso? Porque no funciono? Esto se debe a que nuestro ejemplo es sin Actividad por ende no se le definio ninguna como predeterminada para corregir esto vayan al boton que dice app y tiene una cruz roja, lo clickean y debe aparecer Edit configurations

Anuncios

Aca les aparecera un nuevo cuadro, en este caso deben ir a la opcion Launch Options en el menu que dice Default Activity seleccionan Specific Activity, abajo aparecera una nueva opcion pulsan el boton con los tres puntos (…) les aparecera un nuevo cuadro y seleccionan la unica actividad que aparece, una vez hecho todo esto y debera quedar como esto

Anuncios

Presionan Ok, con esto ya lo configuramos aqui pero ahora solo nos resta modificar el AndroidManifest.xml para que quede declarado en el manifiesto de Android, para ello agregaremos dentro del tag application este bloque:

    <activity android:name=".RTSActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Anuncios

Basicamente lo que hace es decir que esta clase es una actividad, podremos usarla como tal y tambien sera nuestra actividad principal, nuestro manifiesto quedara de la siguiente manera:

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.example.clasesbasicas">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
    <activity android:name=".RTSActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    </application>
</manifest>
Anuncios

Con todo esto modificado y configurado podemos proceder a compilar y probar nuestra aplicacion, obteniendo el siguiente resultado

Anuncios

Como podemos ver en este caso nos salio todo lo solicitado en el log de la aplicacion, en este caso podemos ver como no solamente nos mostro el valor de la funcion disparar sino los valores establecidos para salud sino tambien para el tipo de soldado pero nosotros a su vez podemos seguir agregando mas funciones y clases, tal como vimos en el proyecto anterior, por ejemplo podriamos agregar la siguiente clase:

public Soldado CurarSoldado(Soldado soldadoAcurar){
	soldadoAcurar.salud++;
	return soldadoAcurar;
}
Anuncios

En este caso crearemos una funcion de la clase Soldado para “curar” al soldado, como argumento le enviaremos un objeto de tipo Soldado, luego tomaremos ese argumento y le incrementaremos en 1 a salud, para luego devolver el objeto por medio de return, nuestro siguiente paso sera agregar estas lineas al final de la funcion de onCreate:

        CurarSoldado(chamame);
        Log.d("Salud de Chamame = ", "" + chamame.salud);
Anuncios

En la primer linea le diremos que cure al objeto chamame y en la siguiente linea lo mostraremos en el log de la aplicacion, antes de ver su funcionamiento observemos el codigo final:

RTSActivity.java

package org.example.clasesbasicas;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class RTSActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        Soldado brown = new Soldado();
        Soldado chamame = new Soldado();
        Soldado cabral = new Soldado();

        brown.salud = 100;
        brown.tipoSoldado = "marino";
        chamame.salud = 110;
        chamame.tipoSoldado = "piloto";
        cabral.salud = 150;
        cabral.tipoSoldado = "soldado";

        Log.d("Salud de Brown = ", "" + brown.salud);
        Log.d("Salud de Chamame = ", "" + chamame.salud);
        Log.d("Salud de Cabral = ", "" + cabral.salud);

        brown.disparar();
        chamame.disparar();
        cabral.disparar();

        CurarSoldado(chamame);
        Log.d("Salud de Chamame = ", "" + chamame.salud);
    }

    public Soldado CurarSoldado(Soldado soldadoAcurar){
        soldadoAcurar.salud++;
        return soldadoAcurar;
    }
}
Anuncios

Con esto podemos pasar a compilar nuestra aplicacion y ver como es la salida con la nueva modificacion

Anuncios

En este caso podemos ver como incremento el valor de salud en el objeto informado, y sigue manteniendo las acciones anteriores.

Anuncios

En resumen, hoy hemos visto como crear una aplicacion sin actividades, como se agregaron clases de Java a las mismas, todas las modificaciones necesarias para poder trabajar con ellas, hemos visto como tener multiples objetos de una misma clase y cada uno con su conducta, tambien hemos visto como agregar una funcion para modificar los datos de los mismos, 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

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00