Professor: Anderson Luís Furlan
Instalação e Configuração
✓ Download no link:https://sourceforge.net/projects/robocode/
✓ Executar robocode-X.X.X.X-setup.jar
Necessário Java 6 ou superior instalado e configurado o %JAVA_PATH%
Instalação e Configuração
✓ Passo 1:
✓ Passo 2:
Instalação e Configuração
✓ Passo 3:
✓ Passo 4:
Instalação e Configuração
✓ Passo 5:
✓ Passo 6:
Instalação e Configuração
✓ Passo 7:
Lema do Robocode:Build the best, destroy therest!
Apresentado o Robocode
✓ O que é?
Jogo de programação, com o objetivo de desenvolver um robô tanque de guerra para lutar contra outros tanques.
✓ Funcionamento
O jogador não participa ativamente da partida, ele programa a Inteligência Artificial que irá comandar o robô, estipulando como ele irá reagir a determinados acontecimentos na arena de batalha.
Apresentado o Robocode
✓ Motivação
Jogo que visa o ensino de programação de uma maneira mais fácil que a tradicional
✓ Ambiente de desenvolvimento
Editor
Compilador Java
Open Source
Apresentado o Robocode✓ Histórico
Desenvolvido originalmente por Mathew Nelson em 2000
Incentivo da IBM em 2001
A inspiração veio de Robot Battle um jogo dos anos 80
2005 se tornou Open Source no SourceForge
Em 2006 Flemming Larsen assumiu o desenvolvimento do projeto Robocode
Em 2010 foi criado o plug-in .NET
Apresentado o Robocode✓ Anatomia do Robocode
Body (Corpo):
A lataria do tanque. É usado para mover o robô para frente e para trás, para esquerda e para a direita.
Apresentado o Robocode✓ Anatomia do Robocode
Gun (Arma):
Dispara as balas, pode se movimentar para esquerda ou direita.
✓ Anatomia do Robocode
Radar (Monitoramento):
Identifica os inimigos, girando para esquerda ou direita. Dispara um evento ao detectar um inimigo.
É um dos recursos mais importantes do robô, sem ele acertar outro robô é impossível e o movimento é exclusivamente randômico
Apresentado o Robocode
Apresentado o Robocode✓ Restrições
Energia:
• Utilizada nas operações do robo.
• No disparo, pode-se definir a potência de energia utilizada
• É recuperada quando acerta outro robo
Apresentado o Robocode✓ Restrições
Calor:
• Um canhão só dispara quando o calor estiver em 0
• O calor gerado é proporcional a potência do disparo
Apresentado o Robocode✓ Coordenadas
Usa o sistemas de coordenadas cartesiano
✓ Medidas
O robocode trabalha com medidas em pixels
Primeira batalha✓ Battle > New ✓ Selecionar os robôs Tracker, RamFire e MyFirstRobot. Clicar
em Add para adicionar cada um.
Primeira batalha
✓ Em seguida, clique na aba Rules
✓ Altere a propriedade Number ofRounds para 3
✓ Deixe a resolução em 800x600
✓ Clique em Start Battle
Primeira batalha
Primeira batalha✓ Tela de batalha
Velocidade
Parar
Reiniciar
Pausar
Logs
Vida
Pontuação
Primeira batalha
✓ Ao final da batalha, são apresentadas a pontuação final, juntamente com o Rank.
Primeira batalha✓ Pontuação
Total Score: Soma de todos os pontos do robo na batalha
Survival Score: 50 pontos são adicionados para cada robô quando um oponente morre.
Last Survivor Bonus: O vencedor do round ganha 10 pontos para cada robô morto.
Bullet Damage: 1 ponto para cada vez que atinge um inimigo
Primeira batalha✓ Pontuação
Bullet Damage Bonus: Quando um tiro destrói um inimigo, o robo ganha 20% a mais sobre a sua pontuação de BulletDamage.
Ram Damage: 2 pontos para cada ponto de dano ao inimigo ao bater nele.
Ram Damage Bonus: 30% da pontuação de ram damage, será dado ao tanque que matar outro tanque.
1sts, 2nds, 3rds, etc.: Indica a posição do robo no round
Meu primeiro robô
✓ Menu Robot > Source Editor
✓ Na janela aberta vá no menu File > New > Robot
✓ Na caixa de diálogo preencha o nome do robo como MeuPrimeiroRobo
✓ Em seguida preencha o pacote com o nome satc.robocode
✓ Irá abrir o Robocode Editor, vá em Compiler > Compile, depois em File e Save, em seguida feche o editor.
✓ Crie uma batalhe de 3 rounds entre o MeuPrimeiroRobo e o robo Fire
Meu primeiro robô
Meu primeiro robô
Meu primeiro robô
✓ Desabilitar som: Options > Preferences > Sound Options > Sound Effects > desmarcar Enable Sound
✓ Habilitar visão do radar: Options > Preferences > ViewOptions > marcar Visible Scan Arcs
✓ Habilitar visão da borda: Options > Preferences > ViewOptions > marcar Visible Sentry Border
✓ Testando o robô: Utilize o robô Interactive que é movimentado pelo mouse e teclado.
Configurações e Dicas
✓ setBodyColor (Color color)
✓ setGunColor (Color color)
✓ setRadarColor (Color color)
✓ setBulletColor (Color color)
✓ setScanColor (Color color)
✓ setAllColors (Color color)
✓ setColors (Color bodyColor, Color gunColor, Color radarColor)
✓ setColors (Color bodyColor, Color gunColor, Color radarColor, Color bulletColor, Color scanArcColor)
O pacote de cores usado pelo Robocode é do pacote java.awt.Color:https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html
Personalizando a aparência
Métodos de movimentos
✓ ahead (double distance): Move o robô para frente a quantidade x de pixels estipulada por parâmetro
✓ back (double distance) : Similar ao ahead só que move para trás
✓ fire(double power): Dispara um tiro, com o poder do tamanho especificado por parâmetro.
Métodos de movimentos
✓ turnLeft (double degrees): Vira o robô a esquerda, rotacionando-o no ângulo do grau informado
✓ turnRight (double degrees): O mesmo que turnLeft, só que para a direita
✓ turnRadarLeft (double degrees): Vira o radar para esquerda
✓ turnRadarRight (double degrees): Vira o radar para a direita
✓ turnGunLeft (double degrees): Vira o canhão para a esquerda
✓ turnGunRight (double degrees): Vira o canhão para a direita
Ajustes de movimentos
✓ setAdjustGunForRobotTurn (boolean independent): Vira o canhão junto com o veículo se falso
✓ setAdjustRadarForGunTurn (boolean independent): Vira o radar junto com o veículo
✓ setAdjustRadarForRobotTurn (boolean independent): Vira o radar junto com o canhão
Eventos básicos
✓ onScannedRobot (ScannedRobotEvent event): Método chamado quando o robô vê outro robô pelo radar
✓ onHitWall (HitWallEvent event): Método chamado quando o robô colide com a parede do campo de batalha
✓ onHitRobot (HitRobotEvent event): Quando o robô colide com outro robô
✓ onHitByBullet (HitByBulletEvent event): O robô é atingido por um tiro.
Eventos básicos
✓ onBulletMissed (BulletMissedEvent event): Método chamado quando um dos seus disparos erra o alvo
✓ onBulletHit (BulletHitEvent event): Ao acertar outro robô com o disparo esse método é chamado
✓ onRobotDeath(RobotDeathEvent event): Informação quando outro robô morre
✓ onWin(WinEvent event): Quando você vence a batalha
✓ onDeath(DeathEvent event): Quando você morre
✓ getX(): Retorna a posição corrente do robô no eixo X✓ getY(): Retorna a posição corrente do robô no eixo Y✓ getHeight(): Altura✓ getWidth(): Largura✓ getBattleFieldHeight(): Informa a altura do campo de
batalha em pixels✓ getBattleFieldWidth(): Largura do campo de batalha✓ getGunHeading(): Direção em graus para onde o canhão
está apontando✓ getRadarHeading(): Posição do radar corrente✓ getHeading(): Posição em graus para onde o veículo está
direcionado
Obtendo informações
Atividades
1. Criei um robo com o nome SeuNomeRobot no pacote meusrobos
2. Personalize a cor do corpo, do radar, da arma, da bala e do scanner.
3. Crie um log para todos os eventos vistos anteriormente. Por exemplo, para o evento onHitByBullet imprima no console “Fui atingido por RobotNome”.
4. Faça sua lógica de combat para nossa primeira batalha.
Empacotando robôs
Empacotando robôs
Empacotando robôs
Empacotando robôs
Empacotando robôs
Importando robôs
Importando robôs
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
Robocode no NetBeans
AdvancedRobot
AdvancedRobot
AdvancedRobot✓ Características
✓ Enquanto um Robot pode só fazer uma coisa ao mesmo tempo, o AdvancedRobot pode definir vários comandos ao para executar ao mesmo tempo.
✓ São características do AdvancedRobot:
✓ Múltiplos eventos simultâneos – Ex.: Crazy
✓ Estratégias a cada turn – Ex.: Crazy
✓ Criados eventos customizados – Ex.: Target
✓ Pode manipular arquivos – Ex.: SittingDuck
✓ Interação com o usuário – Ex.: Interactive
AdvancedRobot
✓ setAhead
✓ setBack
✓ setFire
✓ execute
✓ setTurnLeft
✓ setTurnRight
✓ setTurnGunRight
✓ setTurnGunLeft
✓ setTurnRadarLeft
✓ setTurnRadarRight
✓ waitFor
✓ addCustomEvent
✓ onCustomEvent
AdvancedRobot✓ Exemplos de robôs avançados
✓ Crazy
✓ Interactive
✓ Interactive_v2
✓ SittingDuck
✓ SpinBot
✓ Target
Build the best, destroy the rest!
Referências
Robocode Home. Disponível em: <http://robocode.sourceforge.net>. Acesso em: 20 mar. 2016.
Robowiki. Disponível em: <http://robowiki.net/wiki/Robocode>. Acesso em: 21 mar. 2016.
Top Related