El proyecto Robocode data del inicio de la década de los 2000, creado por Mathew Nelson, y entonces sólo soportaba Java. Aunque con el tiempo se han ido añadiendo funcionalidades el objetivo sigue siendo el mismo: desarrollar un tanque para machacar a tus adversarios.
Hace no mucho tiempo incorpora la posibilidad de desarrollar los robots en la plataforma .NET aunque su uso no es tan extendido.
Hay ligas, como la RoboRumble@Home, la más veterana y respetada, rankings generales y por categorías, un “Hall of Fame” de los tanques más temidos y revolucionarios y una comunidad siempre activa y dispuesta al desafío donde la igualdad de oportunidades es la misma para todos.
Para equilibrar los combates los tanques se organizan en categorías al estilo del boxeo, por peso. Dicho peso se calcula en una “báscula” que mide el código efectivo de las clases: codesize.jar
De esta forma se dividen en:
Nanobots: cuyo código efectivo es menor de 250 bytes
Microbots: los que están entre 251 y 750 bytes
Minibots: los que están entre 751 y 1500 bytes
Megabots – por encima de 1501 bytes
Partes de un tanque y manejo
Los tanques se componen de tres partes: el cuerpo, el cañón y el radar.
Partes de un tanque/robot de Robocode
El cañón rota sobre el eje central del tanque al igual que el radar y dicha rotación es controlada completamente desde programación.
Estas tres partes sólo podemos obtener información de dos de ellas:
El cuerpo: con getX() y getY() localizamos al tanque en el “ring” y con getHeading() obtenemos la dirección hacia donde esté mirando. Este último dato es importante ya que, para hacerlo avanzar, sólo disponemos de la función ahead(distancia_a_avanzar) y back(distancia_a_retroceder).
El radar: lo podremos girar con turnRadarRight(grados) o turnRadarLeft(grados), y esto es importante porque el radar es direccional y lo que no esté en su radio de acción no lo detectará.
Hay más comandos disponibles, incluso para fijar el radar al cañón o al cuerpo, para consultar tu estado y, por supuesto, para disparar.
Pero, quizás, los más importantes son los que se refieren al escaner del radar. Cada vez que nuestro radar detecta un robot a nuestro alcance se nos hace saber mediante el evento onScannedRobot, donde podremos detectar todo sobre el tanque que acabamos de avistar (excepto sus intenciones).
El juego perfecto para aprender
No me late