Você está na página 1de 39

Batalhando e Aprendendo com

Robocode
Conhea a ti e ao teu inimigo. - Zun Tzu

Agenda

Objetivo

Ensino de Linguagens

Robs em Java

Robocode

Histrico

Conceitos Bsicos

Robs

Robs Avan!ados

"imes

Batalha entre os presentes



Objetivo

#ivers$o e Embasamento em %rograma!$o


OO

&erramenta 'ue (acilita o aprendi)ado do


paradigma Orientado a Objetos

O Ensino de Linguagens
%neus e "artarugas

Ensino de Linguagens

*o in+cio era como trocar um pneu,

Abre a porta

Acha o pneu (urado

%ega o macaco

Levanta o carro

Retira pneu

%ega estepe

%-e estepe

Bai.a o carro

Ensino de Linguagens

LO/O, A linguagem da tartaruguinha

Com uma tartaruga controlada por um pe'ueno


algoritmo0 era poss+vel observar na tela o resultado
da programa!$o1
to spiral :size
if :size > 30 [stop]
fd :size rt 15
spiral :size * 1.02
end
spiral 10

Ensino de Linguagens

Robocode,

Atrav2s de resultados visuais0 2 poss+vel observar


as seguintes caracter+sticas da OO,

Classes

3nst4ncia de classe

Eventos

5obre6escrita

Envio de mensagens

%ode6se inclusive utili)ar de 31A1



Robs em Java
Robs de verdade mesmo0 n$o virtuais ,67

LeJO5, Java em Lego

%rojeto Open65ource 'ue possibilitou uso de


Java em controladores RC81

"omm9

%articipou do #AR%A /rand Challenge :;;<

=sa a tecnologia %R36>A8 'ue 2 desenvolvida


totalmente em Java pela %errone Robotics1

Java onde nenhuma outra chegou

5pirit e Opportunit9

Robs 'ue est$o atualmente em >arte


possuem J?>@s embutidas com Real "ime
Java1

Robocode
Aue comecem os jogosB

Robocode, =ma Histria

#esenvolvido pela alphaCorDs por >atheE


*elson1 3niciado em 5etembroF:;;;1

Atualmente 2 um projeto hospedado no


5ource&orge1

Objetivos

%rova da per(ormance de Java para o


desenvolvimento de jogos1

Ambiente de aprendi)ado das seguintes


tecnologias,

Orienta!$o G Objetos

3nteligHncia Arti(icial

Java

Aprender OO torna6se divertido e desa(iante1



O Campo de Batalha

Heading

>otor do Robocode

Robocode
Conceitos Bsicos

A Anatomia de um Rob

A Anatomia de um Rob

?eiculo

%rovH movimento e rota!$o ao rob

Canh$o

5erve para dar tiros nos outros robs Id$$$7

Radar

=tili)ado para locali)ar demais robs na arena

>ovimenta6se em conjunto com o canh$o ou


independentemente1

Restri!-es do Rob

Energia

=tili)ado nas opera!-es do rob

*o disparo0 pode6se ser de(inido a 'uantidade de


energia utili)ada

J recuperada 'uando acerta6se outro rob

Calor

=m canh$o s dispara 'uando o seu calor estiver


em )ero1 O calor gerado 2 proporcional a potHncia
do disparo1

Comandos do Rob

turnRightIdouble degree70 turnLe(tIdouble


degree7

vira o rob1

aheadIdouble distance70 bacDIdouble distance7

move o robK 2 (inali)ado caso bata numa parede1

turn/unRightIdouble degree70
turn/unLe(tIdouble degree7

vira o canh$o independente do veiculo1



Ajustes de movimento do Rob

setAdjust/un&orRobot"urnIboolean (lag7

se verdadeiro0 vira o canh$o junto com o ve+culo

setAdjustRadar&orRobot"urnIboolean (lag7

se verdadeiro0 vira o radar junto com o ve+culo1

setAdjustRadar&or/un"urnIboolean (lag7

se verdadeira0 vira o radar junto com o canh$o1



Eventos

on5cannedRobotI5cannedRobotEvent7

m2todo chamado 'uando um rob (oi detectado


pelo radar1

onHitB9BulletIHitB9BulletEvent7

chamado 'uando atingido por uma bala1

onHitRobotIHitRobotEvent7

chamado 'uando seu rob esbarram em outro1

onHitCallIHitCallEvent7

chamado 'uando atinge uma parede1



Obtendo 3n(orma!-es

get8I70 getLI7

coordenada corrente do rob

getHeadingI70 get/unHeadingI70
getRadarHeadingI7

dire!$o corrente

getBattle&ieldCidthI7 and getBattle&ieldHeightI7

dimens$o do campo de batalha1



>eu %rimeiro Rob ,67
import robocode.*;
public class Asimov extends Robot {
public void run() {// implementa Runnable!
while (true) {
this.ahead(1);
this.turnRi!ht(");
#
#
#

#emonstra!$o
%rogramando o Asimov

Robs Avan!ados
Barba0 bigode e cabelo ao mesmo tempo

Robs Avan!ados

En'uanto um rob comum (a) apenas uma


coisa de cada ve)0 no rob avan!ado vocH
primeiro de(ine as a!-es e depois pede para
'ue sejam e.ecutadas1

Caracter+sticas,

>Mltiplos movimentos simultaneamente1

%ode ser de(inida toda uma estrat2gia a cada ti'ue


do relgio1

%ode ser de(inidos eventos customi)ados1

%ode ter ar'uivos de dados1



BlocDing vs1 *on6BlocDing

turnRightI7

turnLe(tI7

turn/unRightI7

turn/unLe(tI7

turnRadarRightI7

turnRadarLe(tI7

aheadI7

bacDI7

set"urnRightI7

set"urnLe(tI7

set"urn/unRightI7

set"urn/unLe(tI7

set"urnRadarRightI7

set"urnRadarLe(tI7

setAheadI7

setBacDI7

>eu 5egundo Rob ,6O
import robocode.*;
public class Asimov$ extends AdvancedRobot {
public void run() {
while (true) {
setAhead(1);
set%urnRi!ht(");
execute();
#
#
#

#emonstra!$o
%rogramando o Asimov Avan!ado

E'uipes
"ropaBBB AtacarBBB

"eamBot e #roid

E.iste a possibilidade de criar um time onde


vocH possui um Rob l+der 'ue envia
comandos aos robs #roids1

>2todo no l+der,

broadcast>essageI5eriali)able msg7

>2todo nos droids,

on>essageReceivedI>essageEvent event7

#emonstra!$o
>9&irst"eam e >9&irst#roid

A *ossa Batalha
>$os a obraBBB

%ontua!$o

5urvival, <; pontos toda ve) 'ue um inimigo


morre1

5urvival bonus, N; ve)es o nMmero de inimigos1

Bullet damage, N ponto por ponto de dano no


inimigo1

Bullet bonus, :;O do dano causado a um


inimigo se (or vocH 'uem o matou1

Ram damage, : pontos por ponto de dano ao


inimigo numa colis$o1

Ram bonus, P;O do dano1



Regras do Jogo

"ipo de competi!$o, >elee

*Mmero de rounds, Q

"ipo de Rob, Comum ou Avan!ado

"amanho do Rob, >egaBot Isem limite7



LinDs

Robocode Central,

http,FFrobocode1source(orge1net

Robocode Repositor9

http,FFrobocoderepositor91com

RoboCiDi

http,FFroboEiDi1net

Você também pode gostar