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.
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
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)
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

Nos aparecera un nuevo cuadro donde completaremos unos campos de la siguiente forma:
- Nombre: Soldado
- Tipo: Class
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!");
}
}
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
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();
}
}
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

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

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

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>
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>
Con todo esto modificado y configurado podemos proceder a compilar y probar nuestra aplicacion, obteniendo el siguiente resultado

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;
}
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);
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;
}
}
Con esto podemos pasar a compilar nuestra aplicacion y ver como es la salida con la nueva modificacion

En este caso podemos ver como incremento el valor de salud en el objeto informado, y sigue manteniendo las acciones anteriores.
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.
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