Requisitos do Sistema
Para executar Robocode, Java 5.0 Standard Edition (SE) ou uma nova versão do Java deve ser instalado em seu sistema:
- Java Runtime Environment (JRE) ou
- Java Developer Kit (JDK)
Note que o JRE não inclui o compilador Java padrão (javac), mas o JDK já o possui. No entanto, Robocode vem com um built-in compilador (TJCE). Por isso, o JRE é suficientes para executar o Robocode.
Observe também que é importante que estas variáveis de ambiente sejam criados antes de Robocode em execução:
- JAVA_HOME deve ser configurado para apontar para o diretório home para Java (JDK ou JRE).
- Windows: JAVA_HOME=C:Program FilesJavajdk1.5.0_22
- UNIX, Linux, Mac OS exemplo: JAVA_HOME=/usr/local/jdk1.5.0_22
- PATH deve incluir o caminho para o bin do diretório home Java ( JAVA_HOME ) que inclui java.exe para iniciar a máquina virtual Java (JVM).
- Windows: PATH=%PATH%;%JAVA_HOME%
- UNIX, Linux, Mac OS exemplo: PATH=${PATH}:${JAVA_HOME}/bin
Se você quiser programar robôs em .NET ou por controle de um aplicativo .NET, você precisa instalar o Robocode. API NET plug-in. O plug-in será instalado clicando duas vezes em robocode.dotnet-xxx-setup.jar da mesma forma que Robocode é instalado.
Meu primeiro Robô
Para você criar o seu robô para uma batalha no RoboCode, você precisa implementar suas funcionalidades herdando uma classe do próprio robocode, é com base nessas classes que você implementa o seu robô. A classe mais simples é o robocode.Robot, mas antes temos que entender como o funciona o jogo:
- Movimentos
Os robôs tanques têm três tipos de movimentos, são eles:
O radar, o canhão (torre) e a esteira (rodas), cada uma delas tem movimentos independentes.
- Tiros
Os tiros disparados pelo canhão possuem um dano especifico e você pode aumentar ou diminuir este dano de acordo com o que você acha necessário, o método para atirar é fire(1).
- Munição
A munição para os tiros disparados na partida é a própria energia do seu robocode. Em outras palavras, se você atirar e errar o tiro, serão descontados da energia do seu robô, caso acerte o tiro, no alvo, o dano causado será convertido para a energia do seu robô.
Métodos
- public void run()
Quando o jogo o começa o método run() é invocado pelo Robocode, neste método será o inicio da sua implementação, é ai onde tudo começa. Este método precisa sempre estar em execução.
- onScannedRobot(ScannedRobotEvent e)
O método onScannedRobot(ScannedRobotEvent e) é um dos mais importante para a lógica do seu robô, este método é invocado pelo jogo quando o radar do seu robô encontra um alvo. No parâmetro deste método é enviado um objeto que contem as informações de posição, nome, velocidade, distancia e outras informações do alvo para você conseguir calcular ou montar sua estratégia
- onHitWall(HitWallEvent e)
Este método é invocado quando o seu robô bater na parede, neste método você tem que redirecionar o seu robô para não ficar batendo na parede infinitamente.
- onHitByBullet(HitByBulletEvent e)
Quando o seu robô levar um tiro de outro oponente este método será invocado, serve para você tentar esquivar ou criar alguma estratégia para fugir dos tiros.
Estes foram alguns métodos, aqueles mais utilizados para montar o um robô para o jogo, existem outros métodos que podem ser visto na documentação do jogo.
Os docs das classes e métodos para referencia pode ser encontrado no link do jogo: https://robocode.sourceforge.net/docs/robocode/
Criando meu primeiro robô
Primeiro vamos extender a classe Robot do robocode, nela vamos sobrescrever o método run e onScannedRobot, vamos fazer o robô andar para frente, girar a torre 360 graus, e andar para traz e atirar no primeiro alvo que ele encontrar, vamos para o codigo:
Fontes: