Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hands on Robocode 2017

194 views

Published on

Hands on que aconteceu na Faculdade SATC em 01/07/2017

Published in: Education
  • Be the first to comment

  • Be the first to like this

Hands on Robocode 2017

  1. 1. Professor: Anderson Luís Furlan
  2. 2. 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%
  3. 3. Instalação e Configuração ✓ Passo 1: ✓ Passo 2:
  4. 4. Instalação e Configuração ✓ Passo 3: ✓ Passo 4:
  5. 5. Instalação e Configuração ✓ Passo 5: ✓ Passo 6:
  6. 6. Instalação e Configuração ✓ Passo 7: Lema do Robocode: Build the best, destroy the rest!
  7. 7. 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.
  8. 8. 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
  9. 9. 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
  10. 10. 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.
  11. 11. Apresentado o Robocode ✓ Anatomia do Robocode  Gun (Arma): Dispara as balas, pode se movimentar para esquerda ou direita.
  12. 12. ✓ 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
  13. 13. 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
  14. 14. 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
  15. 15. Apresentado o Robocode ✓ Coordenadas  Usa o sistemas de coordenadas cartesiano ✓ Medidas  O robocode trabalha com medidas em pixels
  16. 16. Primeira batalha ✓ Battle > New ✓ Selecionar os robôs Tracker, RamFire e MyFirstRobot. Clicar em Add para adicionar cada um.
  17. 17. Primeira batalha ✓ Em seguida, clique na aba Rules ✓ Altere a propriedade Number of Rounds para 3 ✓ Deixe a resolução em 800x600 ✓ Clique em Start Battle
  18. 18. Primeira batalha
  19. 19. Primeira batalha ✓ Tela de batalha  Velocidade  Parar  Reiniciar  Pausar  Logs  Vida  Pontuação
  20. 20. Primeira batalha ✓ Ao final da batalha, são apresentadas a pontuação final, juntamente com o Rank.
  21. 21. 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
  22. 22. 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 Bullet Damage.  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
  23. 23. 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
  24. 24. Meu primeiro robô
  25. 25. Meu primeiro robô
  26. 26. Meu primeiro robô
  27. 27. ✓ Desabilitar som: Options > Preferences > Sound Options > Sound Effects > desmarcar Enable Sound ✓ Habilitar visão do radar: Options > Preferences > View Options > marcar Visible Scan Arcs ✓ Habilitar visão da borda: Options > Preferences > View Options > marcar Visible Sentry Border ✓ Testando o robô: Utilize o robô Interactive que é movimentado pelo mouse e teclado. Configurações e Dicas
  28. 28. ✓ 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/javas e/7/docs/api/java/awt/Color. html Personalizando a aparência
  29. 29. 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.
  30. 30. 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
  31. 31. 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
  32. 32. 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.
  33. 33. 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
  34. 34. ✓ 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
  35. 35. 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.
  36. 36. Empacotando robôs
  37. 37. Empacotando robôs
  38. 38. Empacotando robôs
  39. 39. Empacotando robôs
  40. 40. Empacotando robôs
  41. 41. Importando robôs
  42. 42. Importando robôs
  43. 43. Robocode no NetBeans
  44. 44. Robocode no NetBeans
  45. 45. Robocode no NetBeans
  46. 46. Robocode no NetBeans
  47. 47. Robocode no NetBeans
  48. 48. Robocode no NetBeans
  49. 49. Robocode no NetBeans
  50. 50. Robocode no NetBeans
  51. 51. Robocode no NetBeans
  52. 52. Robocode no NetBeans
  53. 53. Robocode no NetBeans
  54. 54. Robocode no NetBeans
  55. 55. Robocode no NetBeans
  56. 56. Robocode no NetBeans
  57. 57. AdvancedRobot
  58. 58. AdvancedRobot
  59. 59. 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
  60. 60. AdvancedRobot ✓ setAhead ✓ setBack ✓ setFire ✓ execute ✓ setTurnLeft ✓ setTurnRight ✓ setTurnGunRight ✓ setTurnGunLeft ✓ setTurnRadarLeft ✓ setTurnRadarRight ✓ waitFor ✓ addCustomEvent ✓ onCustomEvent
  61. 61. AdvancedRobot ✓ Exemplos de robôs avançados ✓ Crazy ✓ Interactive ✓ Interactive_v2 ✓ SittingDuck ✓ SpinBot ✓ Target
  62. 62. Build the best, destroy the rest!
  63. 63. 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.

×