robocode

Propaganda
ROBOCODE
a guerra dos programadores
O QUÊ É ROBOCODE?
CONCEITOS ENVOLVIDOS
•  POO
•  Polimorfismo
•  Threading
•  Eventos
•  Herança
•  Java Docs
•  Packaging
INSTALAÇÃO
•  http://robocode.sourceforge.net/
•  Necessário Java
ANATOMIA DE UM ROBÔ
MOVENDO O ROBO
•  turnRight(double degree): Gira o robô em um certo número de graus para a direita
•  turnLeft(double degree): Gira o robô em um certo número de graus para a esquerda
•  turnGunRight(double degree): Gira a arma em um determinado número de graus
para a direita
•  turnGunLeft(double degree): Gira a arma em um determinado número de graus para
a esquerda
•  turnRadarRight(double degree): Gira o radar em um certo número de graus para a
direita
•  turnRadarLeft(double degree): Gira o radar em um certo número de graus para a
esquerda.
•  ahead (double distance) e back (double distance) move o robô um determinado
número de pixels.
RESTRIÇÕES DO ROBÔ
•  Energia
•  Utilizada nas operações do robô
•  No disparo, pode-se definir a quantidade de energia utilizada
fire (double power)
•  É recuperada ao acertar outro robô
•  Calor
•  Um canhão só dispara quando seu calor estiver em zero
•  O calor gerado é proporcional a potência do disparo.
COORDENADAS DO CAMPO DE BATALHA
OBTER DIMENSÕES DO CAMPO DE BATALHA
•  getBattleFieldWidth() : Obtém a largura (em píxels) do
campo de batalha
•  getBattleFieldHeight(): Obtém a altura (em píxels) do
campo de batalha
OUTROS MÉTODOS
•  Obter a atual coordenada do robô:
•  getX(): Obtém a coordenada “x” do robô
•  getY(): Obtém a coordenada “y” do robô
• 
Obter a posição (em graus) do robô, radar e arma:
•  getHeading(): Obtém a direção do robô
•  getGunHeading(): Obtém a direção da arma
•  getRadarHeading(): Obtém a direção do radar
•  Outros métodos:
•  getDistance(): Obtém a distância do oponente
•  getBearing(): Obtém o ângulo do oponente em relação a você
EVENTOS
•  onScannedRobot(ScannedRobotEvent e): Este será disparado
quando o radar encontrar algum robô oponente
•  onHitByBullet(HitByBulletEvent e): Este será disparado quando
o robô for atingido por um tiro
•  onHitRobot(HitRobotEvent e): Este será disparado quando o
robô colidir com o oponente
•  onHitWall(HitWallEvent e): Este será disparado quando o robô
colidir com a parede
MÃOS A OBRA
Construindo um robô básico
PONTUAÇÃO
•  Survivor: 50 pontos toda vez que um inimigo morre
•  Survivor bonus: 10 vezes o número de inimigos
•  Bullet Damage: 1 pontos por ponto de dano no inimigo
•  Bullet bonus: 20% do dano causado a um inimigo se for você
quem o matou
•  Ram damage: 2 pontos por ponto causado a um inimigo em
uma colisão
•  Ram bonus: 30% do dano em uma colisão a um inimigo se for
você que o matou
ROBÔS AVANÇADOS
•  Multi-threading
•  Criação de eventos customizados
•  Utilização de arquivos de dados
MÃOS A OBRA
Criação de um robô avançado
TORNEIO ROBOCODE ETECIA
•  Equipes de até 3 alunos (intermódulos permitido)
•  Não é permitido uso de outras classes fora do ambiente Robocode
•  Cada robô deve ser construído em apenas um arquivo Java.
•  Cada disputa será realizada em 9 rounds.
•  Serão permitidos robôs simples e avançados
•  Não há limite para o tamanho do robô (megabots)
•  Tipo de competição: OneOnOne e Melee
•  BattleField: 800 x 600
•  Robôs copiados serão desqualificados
CRONOGRAMA
•  Inscrições: 15 a 31 de maio através do site da escola.*
•  Eliminatória: 04 de junho.
•  Finais: 11 de junho.
PREMIAÇÃO
•  1o Lugar: Medalha de ouro e troféu
•  2o Lugar: Medalha de prata
•  3o Lugar: Medalha de bronze
Download