hands on robocode 2017

Post on 22-Jan-2018

61 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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