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