batalhando e aprendendo com robocodewalderson.com/2013-1/ia/robocode.pdf · batalhando e aprendendo...
TRANSCRIPT
![Page 1: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/1.jpg)
Batalhando e Aprendendo com Robocode
Conheça a ti e ao teu inimigo. - Zun Tzu
![Page 2: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/2.jpg)
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
![Page 3: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/3.jpg)
Objetivo● Diversão e Embasamento em Programação
OO● Ferramenta que facilita o aprendizado do
paradigma Orientado a Objetos
![Page 4: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/4.jpg)
O Ensino de Linguagens
Pneus e Tartarugas
![Page 5: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/5.jpg)
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
![Page 6: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/6.jpg)
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 :sizeif :size > 30 [stop]fd :size rt 15spiral :size * 1.02
endspiral 10
![Page 7: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/7.jpg)
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.
![Page 8: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/8.jpg)
Robôs em Java
Robôs de verdade mesmo, não virtuais :-)
![Page 9: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/9.jpg)
LeJOS: Java em Lego● Projeto Open-Source que possibilitou uso de
Java em controladores RCX.
![Page 10: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/10.jpg)
Tommy● Participou do DARPA Grand Challenge 2005● Usa a tecnologia PRI-MAX que é desenvolvida
totalmente em Java pela Perrone Robotics.
![Page 11: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/11.jpg)
Java onde nenhuma outra chegou● Spirit e Opportunity● Robôs que estão atualmente em Marte
possuem JVM's embutidas com Real Time Java.
![Page 12: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/12.jpg)
Robocode
Que comecem os jogos!
![Page 13: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/13.jpg)
Robocode: Uma História● Desenvolvido pela alphaWorks por Mathew
Nelson. Iniciado em Setembro/2000.● Atualmente é um projeto hospedado no
SourceForge.
![Page 14: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/14.jpg)
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.
![Page 15: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/15.jpg)
O Campo de Batalha
![Page 16: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/16.jpg)
Heading
![Page 17: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/17.jpg)
Motor do Robocode
![Page 18: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/18.jpg)
Robocode
Conceitos Básicos
![Page 19: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/19.jpg)
A Anatomia de um Robô
![Page 20: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/20.jpg)
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.
![Page 21: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/21.jpg)
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.
![Page 22: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/22.jpg)
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.
![Page 23: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/23.jpg)
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.
![Page 24: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/24.jpg)
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.
![Page 25: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/25.jpg)
Obtendo Informações● getX(), getY()
– coordenada corrente do robô ● getHeading(), getGunHeading(),
getRadarHeading()– direção corrente
● getBattleFieldWidth() and getBattleFieldHeight()– dimensão do campo de batalha.
![Page 26: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/26.jpg)
Meu Primeiro Robô :-)import robocode.*;public class Asimov extends Robot {
public void run() {// implementa Runnable!while (true) {
this.ahead(100);this.turnRight(90);
}}
}
![Page 27: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/27.jpg)
Demonstração
Programando o Asimov
![Page 28: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/28.jpg)
Robôs Avançados
Barba, bigode e cabelo ao mesmo tempo
![Page 29: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/29.jpg)
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.
![Page 30: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/30.jpg)
Blocking vs. Non-Blocking● turnRight()● turnLeft()● turnGunRight()● turnGunLeft()● turnRadarRight()● turnRadarLeft()● ahead()● back()
● setTurnRight()● setTurnLeft()● setTurnGunRight()● setTurnGunLeft()● setTurnRadarRight()● setTurnRadarLeft()● setAhead()● setBack()
![Page 31: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/31.jpg)
Meu Segundo Robô :-Oimport robocode.*;public class Asimov2 extends AdvancedRobot {
public void run() {while (true) {
setAhead(100);setTurnRight(90);execute();
}}
}
![Page 32: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/32.jpg)
Demonstração
Programando o Asimov Avançado
![Page 33: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/33.jpg)
Equipes
Tropa!!! Atacar!!!
![Page 34: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/34.jpg)
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)
![Page 35: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/35.jpg)
Demonstração
MyFirstTeam e MyFirstDroid
![Page 36: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/36.jpg)
A Nossa Batalha
Mãos a obra!!!
![Page 37: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/37.jpg)
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.
![Page 38: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/38.jpg)
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)
![Page 39: Batalhando e Aprendendo com Robocodewalderson.com/2013-1/ia/Robocode.pdf · Batalhando e Aprendendo com Robocode Conheça a ti e ao teu inimigo. - Zun Tzu. Agenda ... – Através](https://reader037.vdocuments.site/reader037/viewer/2022110300/5be6098709d3f28a428d2e59/html5/thumbnails/39.jpg)
Links● Robocode Central:
– http://robocode.sourceforge.net● Robocode Repository
– http://robocoderepository.com● RoboWiki
– http://robowiki.net