Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu
Agenda Objetivo Ensino de Linguagens Robôs em Java Robocode Histórico Conceitos Básicos Robôs Robôs Avançados Times Batalha entre os presentes
Objetivo Diversão e Embasamento em Programação OO Ferramenta que facilita o aprendizado do paradigma Orientado a Objetos
O Ensino de Linguagens Pneus e Tartarugas
Ensino de Linguagens No início era como trocar um pneu: Abre a porta Acha o pneu furado Pega o macaco Levanta o carro Retira pneu Pega estepe Põe estepe Baixa o carro
Ensino de Linguagens LOGO: A linguagem da tartaruguinha Com uma tartaruga controlada por um pequeno algoritmo, era possível observar na tela o resultado da programação. to spiral :size if :size > 30 [stop] fd :size rt 15 spiral :size * 1.02 end spiral 10
Ensino de Linguagens Robocode: Através de resultados visuais, é possível observar as seguintes características da OO: Classes Instância de classe Eventos Sobre-escrita Envio de mensagens Pode-se inclusive utilizar de I.A.
Robôs em Java Robôs de verdade mesmo, não virtuais :-)
LeJOS: Java em Lego Projeto Open-Source que possibilitou uso de Java em controladores RCX.
Tommy Participou do DARPA Grand Challenge 2005 Usa a tecnologia PRI-MAX que é desenvolvida totalmente em Java pela Perrone Robotics.
Java onde nenhuma outra chegou Spirit e Opportunity Robôs que estão atualmente em Marte possuem JVM's embutidas com Real Time Java.
Robocode Que comecem os jogos!
Robocode: Uma História Desenvolvido pela alphaWorks por Mathew Nelson. Iniciado em Setembro/2000. Atualmente é um projeto hospedado no SourceForge.
Objetivos Prova da performance de Java para o desenvolvimento de jogos. Ambiente de aprendizado das seguintes tecnologias: Orientação à Objetos Inteligência Artificial Java Aprender OO torna-se divertido e desafiante.
O Campo de Batalha
Heading
Motor do Robocode
Robocode Conceitos Básicos
A Anatomia de um Robô
A Anatomia de um Robô Veiculo Provê movimento e rotação ao robô Canhão Serve para dar tiros nos outros robôs (dããã) Radar Utilizado para localizar demais robôs na arena Movimenta-se em conjunto com o canhão ou independentemente.
Restrições do Robô Energia Utilizado nas operações do robô No disparo, pode-se ser definido a quantidade de energia utilizada É recuperada quando acerta-se outro robô Calor Um canhão só dispara quando o seu calor estiver em zero. O calor gerado é proporcional a potência do disparo.
Comandos do Robô turnRight(double degree), turnLeft(double degree) vira o robô. ahead(double distance), back(double distance) move o robô; é finalizado caso bata numa parede. turnGunRight(double degree), turnGunLeft(double degree) vira o canhão independente do veiculo.
Ajustes de movimento do Robô setAdjustGunForRobotTurn(boolean flag) se verdadeiro, vira o canhão junto com o veículo setAdjustRadarForRobotTurn(boolean flag) se verdadeiro, vira o radar junto com o veículo. setAdjustRadarForGunTurn(boolean flag) se verdadeira, vira o radar junto com o canhão.
Eventos onScannedRobot(ScannedRobotEvent) método chamado quando um robô foi detectado pelo radar. onHitByBullet(HitByBulletEvent) chamado quando atingido por uma bala. onHitRobot(HitRobotEvent) chamado quando seu robô esbarram em outro. onHitWall(HitWallEvent) chamado quando atinge uma parede.
Obtendo Informações getX(), getY() coordenada corrente do robô  getHeading(), getGunHeading(), getRadarHeading() direção corrente getBattleFieldWidth() and getBattleFieldHeight() dimensão do campo de batalha.
Meu Primeiro Robô :-) import robocode.*; public class Asimov extends  Robot  { public void run() {// implementa Runnable! while (true) { this.ahead(100); this.turnRight(90); } } }
Demonstração Programando o Asimov
Robôs Avançados Barba, bigode e cabelo ao mesmo tempo
Robôs Avançados Enquanto um robô comum faz apenas uma coisa de cada vez, no robô avançado você primeiro define as ações e depois pede para que sejam executadas. Características: Múltiplos movimentos simultaneamente. Pode ser definida toda uma estratégia a cada tique do relógio. Pode ser definidos eventos customizados. Pode ter arquivos de dados.
Blocking vs. Non-Blocking turnRight() turnLeft() turnGunRight() turnGunLeft() turnRadarRight() turnRadarLeft() ahead() back() setTurnRight() setTurnLeft() setTurnGunRight() setTurnGunLeft() setTurnRadarRight() setTurnRadarLeft() setAhead() setBack()
Meu Segundo Robô :-O import robocode.*; public class Asimov2 extends  AdvancedRobot  { public void run() { while (true) { setAhead(100); setTurnRight(90); execute() ; } } }
Demonstração Programando o Asimov Avançado
Equipes Tropa!!! Atacar!!!
TeamBot e Droid Existe a possibilidade de criar um time onde você possui um Robô líder que envia comandos aos robôs Droids. Método no líder: broadcastMessage(Serializable msg) Método nos droids: onMessageReceived(MessageEvent event)
Demonstração MyFirstTeam e MyFirstDroid
A Nossa Batalha Mãos a obra!!!
Pontuação Survival: 50 pontos toda vez que um inimigo morre. Survival bonus: 10 vezes o número de inimigos. Bullet damage: 1 ponto 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 de dano ao inimigo numa colisão. Ram bonus: 30% do dano.
Regras do Jogo Tipo de competição: Melee Número de rounds: 7 Tipo de Robô: Comum ou Avançado Tamanho do Robô: MegaBot (sem limite)
Links Robocode Central: http://robocode.sourceforge.net Robocode Repository http://robocoderepository.com RoboWiki http://robowiki.net

Batalhas com Robocode

  • 1.
    Batalhando e Aprendendocom Robocode Conheça a ti e ao teu inimigo. - Zun Tzu
  • 2.
    Agenda Objetivo Ensinode Linguagens Robôs em Java Robocode Histórico Conceitos Básicos Robôs Robôs Avançados Times Batalha entre os presentes
  • 3.
    Objetivo Diversão eEmbasamento em Programação OO Ferramenta que facilita o aprendizado do paradigma Orientado a Objetos
  • 4.
    O Ensino deLinguagens Pneus e Tartarugas
  • 5.
    Ensino de LinguagensNo início era como trocar um pneu: Abre a porta Acha o pneu furado Pega o macaco Levanta o carro Retira pneu Pega estepe Põe estepe Baixa o carro
  • 6.
    Ensino de LinguagensLOGO: A linguagem da tartaruguinha Com uma tartaruga controlada por um pequeno algoritmo, era possível observar na tela o resultado da programação. to spiral :size if :size > 30 [stop] fd :size rt 15 spiral :size * 1.02 end spiral 10
  • 7.
    Ensino de LinguagensRobocode: Através de resultados visuais, é possível observar as seguintes características da OO: Classes Instância de classe Eventos Sobre-escrita Envio de mensagens Pode-se inclusive utilizar de I.A.
  • 8.
    Robôs em JavaRobôs de verdade mesmo, não virtuais :-)
  • 9.
    LeJOS: Java emLego Projeto Open-Source que possibilitou uso de Java em controladores RCX.
  • 10.
    Tommy Participou doDARPA Grand Challenge 2005 Usa a tecnologia PRI-MAX que é desenvolvida totalmente em Java pela Perrone Robotics.
  • 11.
    Java onde nenhumaoutra chegou Spirit e Opportunity Robôs que estão atualmente em Marte possuem JVM's embutidas com Real Time Java.
  • 12.
  • 13.
    Robocode: Uma HistóriaDesenvolvido pela alphaWorks por Mathew Nelson. Iniciado em Setembro/2000. Atualmente é um projeto hospedado no SourceForge.
  • 14.
    Objetivos Prova daperformance de Java para o desenvolvimento de jogos. Ambiente de aprendizado das seguintes tecnologias: Orientação à Objetos Inteligência Artificial Java Aprender OO torna-se divertido e desafiante.
  • 15.
    O Campo deBatalha
  • 16.
  • 17.
  • 18.
  • 19.
    A Anatomia deum Robô
  • 20.
    A Anatomia deum Robô Veiculo Provê movimento e rotação ao robô Canhão Serve para dar tiros nos outros robôs (dããã) Radar Utilizado para localizar demais robôs na arena Movimenta-se em conjunto com o canhão ou independentemente.
  • 21.
    Restrições do RobôEnergia Utilizado nas operações do robô No disparo, pode-se ser definido a quantidade de energia utilizada É recuperada quando acerta-se outro robô Calor Um canhão só dispara quando o seu calor estiver em zero. O calor gerado é proporcional a potência do disparo.
  • 22.
    Comandos do RobôturnRight(double degree), turnLeft(double degree) vira o robô. ahead(double distance), back(double distance) move o robô; é finalizado caso bata numa parede. turnGunRight(double degree), turnGunLeft(double degree) vira o canhão independente do veiculo.
  • 23.
    Ajustes de movimentodo Robô setAdjustGunForRobotTurn(boolean flag) se verdadeiro, vira o canhão junto com o veículo setAdjustRadarForRobotTurn(boolean flag) se verdadeiro, vira o radar junto com o veículo. setAdjustRadarForGunTurn(boolean flag) se verdadeira, vira o radar junto com o canhão.
  • 24.
    Eventos onScannedRobot(ScannedRobotEvent) métodochamado quando um robô foi detectado pelo radar. onHitByBullet(HitByBulletEvent) chamado quando atingido por uma bala. onHitRobot(HitRobotEvent) chamado quando seu robô esbarram em outro. onHitWall(HitWallEvent) chamado quando atinge uma parede.
  • 25.
    Obtendo Informações getX(),getY() coordenada corrente do robô getHeading(), getGunHeading(), getRadarHeading() direção corrente getBattleFieldWidth() and getBattleFieldHeight() dimensão do campo de batalha.
  • 26.
    Meu Primeiro Robô:-) import robocode.*; public class Asimov extends Robot { public void run() {// implementa Runnable! while (true) { this.ahead(100); this.turnRight(90); } } }
  • 27.
  • 28.
    Robôs Avançados Barba,bigode e cabelo ao mesmo tempo
  • 29.
    Robôs Avançados Enquantoum robô comum faz apenas uma coisa de cada vez, no robô avançado você primeiro define as ações e depois pede para que sejam executadas. Características: Múltiplos movimentos simultaneamente. Pode ser definida toda uma estratégia a cada tique do relógio. Pode ser definidos eventos customizados. Pode ter arquivos de dados.
  • 30.
    Blocking vs. Non-BlockingturnRight() turnLeft() turnGunRight() turnGunLeft() turnRadarRight() turnRadarLeft() ahead() back() setTurnRight() setTurnLeft() setTurnGunRight() setTurnGunLeft() setTurnRadarRight() setTurnRadarLeft() setAhead() setBack()
  • 31.
    Meu Segundo Robô:-O import robocode.*; public class Asimov2 extends AdvancedRobot { public void run() { while (true) { setAhead(100); setTurnRight(90); execute() ; } } }
  • 32.
  • 33.
  • 34.
    TeamBot e DroidExiste a possibilidade de criar um time onde você possui um Robô líder que envia comandos aos robôs Droids. Método no líder: broadcastMessage(Serializable msg) Método nos droids: onMessageReceived(MessageEvent event)
  • 35.
  • 36.
    A Nossa BatalhaMãos a obra!!!
  • 37.
    Pontuação Survival: 50pontos toda vez que um inimigo morre. Survival bonus: 10 vezes o número de inimigos. Bullet damage: 1 ponto 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 de dano ao inimigo numa colisão. Ram bonus: 30% do dano.
  • 38.
    Regras do JogoTipo de competição: Melee Número de rounds: 7 Tipo de Robô: Comum ou Avançado Tamanho do Robô: MegaBot (sem limite)
  • 39.
    Links Robocode Central:http://robocode.sourceforge.net Robocode Repository http://robocoderepository.com RoboWiki http://robowiki.net