Robocode – Qué es y cómo configurarlo

Robocode puede ayudarte a aprender conceptos tanto básicos como avanzados de la programación orientada a objetos, concretamente en Java. En esta entrada vamos a ver qué es y cómo configurarlo.

¿Qué es Robocode?

Pues es una plataforma que te permite tanto la creación de inteligencias artificiales para robots (concretamente tanques), así como te proporciona lo necesario para hacerlos competir en batallas cuyos objetivos sólo tu imaginación limita.

Aquí te dejo un enlace a su página oficial.

Robocode en acción
Robocode en acción

Como puedes ver en la imagen anterior, el programa principal de Robocode plantea una plataforma desde la que puedes crear batallas, pero también crear tus propios robots.

El sistema de juego es sencillo:

  • Los robots están compuestos por 3 partes diferenciadas que pueden controlarse independientemente:
    • Cuerpo: el que permite al robot desplazarse y girar.
    • Cañón: está montado encima del y permite al robot aputar y disparar.
    • Radar: implantado en el cañón, da al robot la posibilidad de detectar al resto de contrincantes.
  • Cada robot tiene una cantidad de vida, que puede verse modificada según las siguientes circunstancias
    • Cuando 2 robots chocan, la vida de ambos disminuye
    • Si un robot recibe un disparo, pierde vida proporcionalmente a la fuerza de ataque recibida
    • Cuando un robot acierta un disparo, gana vida proporcionalmente a la fuerza de ataque elegida

Como programador serás el encargado de dotar de comportamiento a un robot para enfrentarse a los posibles enemigos que encuentre en el campo de batalla. Para ello se utiliza el lenguaje Java y las clases predefinidas que Robocode aporta.

Pero vamos a ver primero cómo instalarnos la herramienta y configurarla con nuestro IDE Eclipse.

Instalación del Java Development Kit (JDK)

El entorno de desarrollo de Java (JDK) es necesario para poder poder desarrollar robots con Robocode. Si ya tienes Eclipse o Netbeans instalado y puedes programar en Java, directamente pasa a la Instalación de Robocode. En caso contrario sigue leyendo.

Inicialmente Oracle distribuía el JDK gratuitamente. Sin embargo desde su versión 11 los términos en la licencia cambiaron. De todas formas tienes varias opciones para instalar el JDK.

  • La primera es la versión original de OpenJDK, una distribución libre del JDK y que en el momento de escribir esta entrada va por la versión OpenJDK 15. Si vas a usar windows OpenJDK necesita que configures variables del sistema de forma manual aunque el proceso no es excesivamente difícil y puedes encontrar múltiples tutoriales en internet sobre cómo hacerlo. De todas formas, si no quieres complicarte mucho puedes optar por otras que te indico a continuación.
  • Puedes elegir una versión de Oracle anterior a la 11. Ten en cuenta que desde la JDK 6 Robocode te va a funcionar perfectamente. Para ello escribe en el buscador ‘descargar JDK 8’, o el número de versión que quieras, y localizarás rápidamente el enlace correspondiente a Oracle. Eso sí, necesitarás crear una cuenta de Oracle para descargarlo.
  • También puedes elegir la distribución propia del OpenJDK que hace RedHat, que requiere menos esfuerzo para instalar, y cuyo historial de versiones puedes encontrar en esta página. Eso sí, también tienes que pasar por crearte una cuenta de RedHat y, en este caso, te piden de forma obligatoria un número de teléfono. Esto me toca las narices un poco, pero tras introducirle el típico 612345678 ha colado, así que ya sabes.
  • Finalmente, y esta es la opción que veo más interesante, Amazon ha creado su propia distribución del OpenJDK llamada Coretto. La ventaja es que es una versión de producción que la propia Amazon utiliza en múltiples servicios, por lo que garantiza que está probada y lista para la producción. De todas formas, al final tú decides.

Instalación de Robocode

Descarga antes de nada los siguientes archivos:

  • Archivo .jar de Robocode: este es el archivo de instalación de la plataforma en sí. El proyecto Robocode en GitHub te proporciona siempre la última versión. Sólo tienes que hacer clic en el botón verde que te lo indica.
Descargar instalador y fuentes
El botón señalado en rojo es el que te da acceso rápido a la descarga del instalador, la carpeta subrayada en azul te permite descargar los fuentes
  • Archivo de fuentes: si quieres poder acceder desde Eclipse al código fuente de las clases que Robocode te proporciona debes descargar también el archivo de fuentes, que lo tienes disponible clasificado por versiones en el siguiente enlace.

Una vez tienes descargado todo lo necesario e instalado el JDK ejecuta el archivo de la instalación de Robocode. Ten en cuenta que la instalación está en formato .jar por lo que una vez instalado el JDK deberás ejecutarlo con la máquina virtual de java. En Windows, por ejemplo, deberías hacer clic con el botón derecho, elegir ‘Abrir con’ y luego elegir la máquina virtual de Java. Dependiendo de la versión que hayas instalado cómo se te vea puede variar.

Ejecutar instalador con Java
En mi caso tengo instalada una versión previa a la 11 de Oracle

Hecho esto te aparecerá el instalador de Robocode, que te preguntará si lo quieres instalar y por defecto lo hará en c:\robocode. Te recomiendo no cambiarlo. Sigue el proceso y si has elegido que te cree un acceso directo al lanzarlo aparecerá la siguiente pantalla:

Ventana de Robocode
Ventana inicial de Robocode

Pues una cosa hecha. Ahora toca configurar nuestro entorno de Eclipse para que podamos gestionar nuestros robots y ejecutar desde él directamente Robocode.

Configuración de Eclipse para desarrollar robots de Robocode

Abre Eclipse y crea un proyecto nuevo del tipo ‘Java project’ dándole el nombre que consideres oportuno. Yo le he puesto Robocode, así al azar. Después clica en siguiente. Si le has dado a finalizar no pasa nada, se puede llegar al mismo sitio haciendo clic derecho sobre el proyecto y seleccionando ‘Properties’ y dentro eligiendo ‘Java Build Path’, pero seguramente te resulte más fácil si le das a siguiente.

Dentro de la nueva sección que te aparece:

  1. Sitúate en la pestaña ‘Libraries’. A mí es que me gusta tenerlo en inglés, porque luego buscas tutoriales en Internet y todo lo interesante te aparece en inglés.
  2. Selecciona el apartado de Classpath. Esto es muy importante porque si no posteriormente al lanzar Robocode eclipse lanzará una excepción y no te permitirá ejecutar.
  3. Clica en ‘Add Library’ o su equivalente en español y te aparecerá una nueva ventana.
Indicaciones para añadir librería Robocode
Sigue las indicaciones por orden
  1. Elige ‘User Library’ y dale a siguiente.
  2. Clica en ‘User Libraries…’, botón que aparece a la derecha, y de nuevo otra nueva ventana.
Crear librería de usuario.
  1. Haz clic en ‘New’
  2. Nombra la nueva librería.
  3. Clica en OK
  4. Selecciona la nueva librería ‘Robocode’ (o el nombre que le hayas dado)
  5. Verás que se habilita el botón ‘Add External JARs…’. Haz clic en él.
  6. Dirígete a la carpeta de Robocode y en la subcarpeta ‘libs’ selecciona el archivo ‘robocode.jar’.
  7. Clica en abrir.
Incluir JAR externo a la librería
Incluir JAR externo a la librería
  1. Expande la librería si es necesario y selecciona la localización de los fuentes que antes descargaste (yo prefiero copiarlos al propio directorio de Robocode). No tienes ni que descomprimirlos, has de seleccionar directamente el archivo .zip
  2. Indica dónde se encuentran los JavaDoc, que por defecto se encuentran en la carpeta de Robocode en la subcarpeta javadoc.
Indicar archivos fuente y Javadoc
Expande si es necesario hasta poder enlazar con los fuentes y con el JavaDoc
  1. Pulsa en ‘Apply and close’; se cerrará la ventana.
  2. Ahora selecciona la librería y pulsa en ‘Finish’.
  3. La pestaña de librerías debería quedar con el contenido de la captura posterior.
Estado final de nuestra librería Robocode añadida al proyecto
Librería Robocode añadida a nuestro proyecto
  1. Pulsa en Finish y ¡mucho cuidado! Si te pregunta crear el archivo module-java.info debes clicar en ‘Don’t create’.
No crees el archivo module-info.java

Primer robot

Listo, ya estás preparado para generar tu primer robot. Para el primero no nos vamos a complicar mucho. Dirígete a la página My first robot de la guía ‘Getting started‘ y, aunque estaría bien que te leyeras un poco de la guía, copia el código y pégalo en tu robot, que debería quedar finalmente así:

package ejct;
 import robocode.*;
 public class MyFirstRobot extends Robot {
     public void run() {
         while (true) {
             ahead(100);
             turnGunRight(360);
             back(100);
             turnGunRight(360);
         }
     }
     public void onScanedRobot(ScannedRobotEvent e) {
             fire(1);
     }
 }

Configurar Eclipse para lanzar Robocode

Este es el último paso antes de poder empezar a desarrollar robots. Lo primero que debes hacer es lanzar Robocode de forma independiente y en el menú ‘Options’ elegir ‘Preferences’ y dentro la pestaña ‘Development Options’.

Una vez dentro clica en ‘Add’ y en la ventana que se te abre busca la carpeta ‘bin’ de tu proyecto en Eclipse. De esta forma le estamos diciendo a Robocode que debe incluir tus robots junto con el resto de robots que el propio Robocode proporciona. Pulsa en ‘Finish’.

Indicar dónde se encuentran tus robots.
Debes indicar a Robocode dónde debe buscar tus robots.

Ahora, en Eclipse, con tu proyecto seleccionado ve al menú Run y elige ‘Run configurations’. Selecciona el elemento ‘Java Application’ y dale a nuevo (bien el icono del papel en blanco o bien botón derecho ‘New configuration’). Deja esa configuración más o menos como en la siguiente imagen (con más o menos quiero decir que puedes variar el nombre de la configuración y escribir correctamente el nombre de tu proyecto. La parte de ‘Main class’ debe quedar exactamente como te indico.

Ahora selecciona la pestaña ‘Arguments’ y pega en ‘VM arguments’ el siguiente texto:

-Xmx512M -Dsun.io.useCanonCaches=false -Ddebug=true

En Working Directory selecciona ‘Other’ y busca o escribe directamente C:\robocode de forma que la pestaña te quede tal que así:

Pestaña Arguments de la configuración 'Run'
Pestaña Arguments de la configuración ‘Run’

Si ahora pulsas en ‘Run’ y todo ha ido bien verás cómo se lanza directamente Robocode. La ventaja de hacer esto es que podremos depurar directamente sobre el campo de batalla nuestros robots, simplemente estableciendo puntos de ruptura en nuestro código y lanzando el Debugger con la configuración de ejecución que acabamos de generar.

Bueno, aunque parece que hemos hecho mucho, este solo ha sido el primer paso, ahora es cuando empieza lo bueno.

¡Prueba a desarrollar robots y echarlos a pelear con los que vienen por defecto!

Volver al índice de Robocode.