Вы находитесь на странице: 1из 3

Prof. Roberto F Tavares Neto http://www.dep.ufscar.br/tavares/cms/evision_cms/evision_cms/modul...

Insert your header here.


Tutorial de Robocode
Autor: Sing Li
Fonte: http://www-128.ibm.com/developerworks/java/library/j-robocode/
acesso em 6 de julho de 2007
Tradução: Tatiane Marques (aluna de Engenharia de Produção, UFSCar)
Orientador do projeto: prof. Dr. Pedro Oprime
Co-orientador / Revisão: Prof. MsC Roberto Fernandes Tavares Neto

Rock 'em, sock 'em Robocode!


A aprendizagem de programação em Java está mais divertida do que nunca com este avançado motor de
simulação de batalha de robô.
É possível aprender a herança, o polimorfismo, gerenciamento de eventos, e inner classes evitando balas e executando
com precisão manobras de ataque? Uma surpreendente ferramenta-de-ensino-jogo-mania-viciante chamada Robocode
está a ponto de fazer isto uma realidade para desenvolvedores Java do mundo inteiro. Veja como Sing li desconstrói o
Robocode e começa, de sua maneira, a construir sua própria máquina de luta.

Robocode é um simulador de batalha de robôs fácil de usar, que funcione através de todas as plataformas que suportam
Java 2. Você cría um robô, põe ele em um campo de batalha, e deixa-o lutar até o final contra os robôs oponentes
criados por outros desenvolvedores. Robocode vem com um jogo de oponentes pré- gerados pra você começar. Mas uma
vez que você avança no Robocode, pode incorporar sua criação contra as melhores criações do mundo em uma das ligas
que estão sendo formadas no mundo inteiro.

Cada participante de Robocode cria o seu próprio robô que usa elementos da linguagem Java permitindo que um grande
conjunto de desenvolvedores – de iniciantes a hackers avançados - de participar. Os desenvolvedores iniciantes de Java
podem aprender os seguintes fundamentos: chamando o código API, lendo Javadocs, herança, inner classes,
gerenciamento de eventos, e assim por diante. Os desenvolvedores avançados podem ajustar sua habilidade de
programação em um desafio global para construir o melhor o robô de software. Neste artigo, nós introduziremos o
Robocode e iniciaremos no seu caminho à conquista do mundo, gerando seu primeiro robô. Também daremos uma
olhada nos fascinantes "bastidores" do maquinário do Robocode.

Baixando e instalando o Robocode


Robocode é uma criação de Mathew Nelson, um engenheiro de software em Tecnologia Avançada, na divisão de internet
da IBM. Antes de tudo, veja a página do Robocode. Aqui você encontrará os últimos executáveis do sistema Robocode.
Uma vez feito o download do distribuidor, que está reservado em arquivo de instalação, você pode usar o seguinte
comando para obter o pacote de instalação no seu sistema (assumindo que você tenha a versão Java VM (JDK 1.3.x)
pré-instalada no seu computador, naturalmente):

java -jar robocode-setup.jar


Durante a instalação, Robocode irá lhe perguntar se você gostaria de usar a versão Java VM, para compilações do robô.
A outra alternativa é o compilador de Jikes que é fornecido como a parte da distribuição de Robocode.

Após sua instalação, você pode iniciar o sistema de Robocode também do Shell script (robocode.sh), do arquivo batch
(robocode.bat), ou do ícone no desktop. Neste momento, o campo de batalha aparecerá. A partir daqui, você pode
invocar o editor e o compilador do robô usando o menu.

Componentes do sistema Robocode


Quando você ativa o Robocode, você verá duas janelas relacionadas do GUI, que dão forma ao IDE:

O campo de batalha (battlefield)


O Editor Do Robô (Robot Editor)

A Figura 1 mostra o campo de batalha e o editor do robô em ação:

Figura 1 - O IDE Robocode

1 de 3 29/09/2010 Fabio14:37
Prof. Roberto F Tavares Neto http://www.dep.ufscar.br/tavares/cms/evision_cms/evision_cms/modul...

O campo de batalha é o lugar onde a batalha entre os robôs acontece. Ele aloja o engine (“motor”) principal da
simulação e permite que você crie, salve e abra batalhas novas ou existentes. Você pode pausar e recomeçar a batalha,
finalizar a batalha, destruir qualquer outro robô individualmente, ou obter as estatísticas de qualquer outro robô usando
os controles disponíveis na arena. Além disso, você pode ativar o editor de robô (Robot Editor) desta tela.

O Robot Editor é um editor de texto construído para editar os arquivos fonte em Java que montam um robô. Integra o
compilador em Java (para compilar o código do robô) e o pacote do robô construído no menu. Todo o robô criado com o
Robot Editor e compilado com sucesso está pronto para ir ao campo de batalha.

Um robô em Robocode consiste em um ou mais classes em Java. Estas classes podem ser arquivadas dentro de um
pacote JAR. A última versão do Robocode possui um "Robot Packager" que pode ser ativado da janela do GUI do campo
de batalha, para esta finalidade.

A Anatomia de um robô Robocode


A Figura 2 ilustra um robô Robocode típico:

Figura 2 - Um robô Robocode típico

Observe que o robô tem arma giratória, e no alto dda arma um radar rotatório. O veículo do robô, o injetor, e o radar
podem girar independentemente: em qualquer momento no tempo, o veículo, o injetor, e o radar do robô podem ser
girados em sentidos diferentes. Pelo padrão, estes itens são alinhados, de frente para o sentido do movimento do
veículo.

Comandos do Robô

2 de 3 29/09/2010 Fabio14:37
Prof. Roberto F Tavares Neto http://www.dep.ufscar.br/tavares/cms/evision_cms/evision_cms/modul...

Todo o jogo de comandos para um robô de Robocode é documentado no Javadoc do Robocode API. Você os encontrará
em métodos públicos da classe robocode.Robot. Nesta seção, nós cobriremos cada um dos comandos disponíveis, pela
categoria.

Movendo o robô, o injetor e o radar

Vamos começar com os comandos básicos de mover o robô e seus equpamentos:

turnRight(double degree) e turnLeft(double degree) gira o robô em um grau especificado.


ahead(double distance) e back(double distance) move o robô em uma distância de pixel especificada; estes dois
métodos são concluídos se o robô bater em uma parede ou em um outro robô.
turnGunRight(double degree) e turnGunLeft(double degree) gira o injetor, independente do sentido do veículo.
turnRadarRight(double degree) e turnRadarLeft(double degree) gira o radar no alto do injetor, independente do
sentido do injetor (e do sentido do veículo).

Nenhum destes comandos devolverá o controle ao programa até que eles sejam conluídos. Além disso, quando o veículo
é girado, o sentido do injetor (e do radar) também se moverá,ao menos que seja indicado os seguintes métodos:

setAdjustGunForRobotTurn(boolean flag): Se a bandeira for ajustada em verdadeiro, o injetor permanecerá no


mesmo sentido quando o veículo girar.
setAdjustRadarForRobotTurn(boolean flag): Se a bandeira for ajustada em verdadeiro, o radar permanecerá no
mesmo sentido enquanto o veículo (e a injetor) gira.
setAdjustRadarForGunTurn(boolean flag): Se a bandeira for ajustada em verdadeiro, o radar permanecerá no
mesmo sentido enquando o injetor girar. Ele também atuará como se setAdjustRadarForRobotTurn(true) fosse
chamado.

Obtendo informações sobre o robô

Muitos métodos existem para dar informação sobre o robô. Aqui está uma lista curta de chamadas freqüentes usadas
nos método:

getX() e getY() recebe a coordenada atual do robô.


getHeading() getGunHeading(), e getRadarHeading() recebe o título atual do veículo, do injetor, ou do radar.
getBattleFieldWidth() e getBattleFieldHeight() recebe a dimensão do campo de batalha do círculo atual

Comandos de Tiro

Uma vez que você dominou os movimentos do robô e de seu respectivo arsenal, é uma boa hora para aprender as
tarefas de tiro e controlar o dano. Cada robô começa apresentando um nível de energia "energy level", e é considerado
destruído quando sua energia alcança o nível zero. Quando disparar os tiros, o robô pode esgotar até três níveis de
energia. Quanto maior a energia fornecida à bala, maior será o dano ocasionado a robô alvo. Fire (double power) e
fireBullet (double power) são usados para disparar uma bala com uma energia específica (fire power). A versão
fireBullet() retornou uma referência ao objeto robocode.Bullet que pode ser usado em robôs mais avançados.

Insert your footer here.

3 de 3 29/09/2010 Fabio14:37

Вам также может понравиться