Está en la página 1de 21

Robocode

Javier Villegas Gmez

Contenido

- Anatoma de un Robot - Mi primer Robot - Fsica del juego - Puntuaciones - n vistazo a la AP! - "jercicio # - "jercicio $ - Manejando "ventos - "jercicio % - "jercicio & - "jercicio '

Anatoma de un Robot
-(uerpo) Permite el movimiento del robot e incorpora el ca*n + el radar,

- (a*on) Apuntar + disparar,

- Radar) -etecta enemigos. a no ser /ue se le diga lo contrario sigue el movimiento del ca*n,

Mi primer robot
Robot0"ditor0File01e2 Robot 1ombre + carpeta,
pac3age man4 import robocode,54 public class M+FirstRobot e6tends Robot 7 public void run89 7 while (true) { ahead(100); turnGunRight(3 0); bac!(100); turnGunRight(3 0); " : : " public #oid on$cannedRobot($cannedRobot%#ent e) { &ire(1);

Por ;ltimo guardar + compilar 8(ompiler0(ompile9

'(ica del )uego


*Coordenada(+ $i(tema Carte(iano (,-.) , / Anchura . / Altura *0irecci1n+ $e mide en grado(

023 0 grado( / 3orte 40 grado( / %(te

150 grado( / $ur 670 grado( / 8e(te

'(ica del )uego


-<iempo + distancia) "l tiempo 8t9 se mide en =tic3s=, # tic3 > # turno ?a distancia se mide en pi6eles de precisin doble. es decir. un robot se puede mover incluso una @raccin de pi6el, - Movimiento del robot) Aceleracin8a9) n robot acelera a # pi6el0turno + decelera a $ pi6eles0turno Velocidad8v9) v > at, ?a velocidad mA6ima son B pi6eles0turno -istancia8d9) d > vt

'(ica del )uego


- Rotacin del robot. ca*n + radar) Rotacin del robot) 8#C - C.D'58velocidad99 grados0turno (uanto mAs rApido te muevas. mAs lento giras, Rotacin del ca*n) $C grados0turno, Ee le a*ade a la rotacin del robot, Rotacin del radar) &' grados0turno, Ee le a*ade a la rotacin del ca*n, -(olisiones) (on otro robot) (ada robot recibe C.F de da*o (on un muro) velocidad 5 C.' -# 8nunca menor /ue C9

'(ica del )uego


- Galas) Potencia del disparo) minimo > C. ma6imo > %, -a*o) & 5 potencia, E potencia H #. se le suma $58potencia -#9 Velocidad) $C - %C5potencia Eobrecalentamiento) # I potencia 0 ', !gual a C para disparar, -isparar consume la potencia del disparo de tu propia energa, "nerga restaurada por impacto) % 5 potencia

9untuacione(
"sta es la tabla de puntuaciones al terminar el juego)

- <otal Ecore) ?a suma de todas las puntuaciones - Eurvival Ecore) (ada robot vivo. gana 'C puntos por cada robot /ue muere - ?ast Eurvival Gonus) "l ;ltimo robot vivo. gana #C puntos por cada robot muerto antes /ue el, - Gullet -amage) # punto por cada punto de da*o realizado a los enemigos - Gullet -amage Gonus) (uando matas un enemigo ganas un $CJ de todo el da*o /ue le Ka KecKo, - Ram -amage) $ puntos por cada punto de da*o realizado con impactos - Ram -amage Gonus) (uando matas un enemigo por impacto. ganas un %CJ de todo el da*o /ue le Kas causado,

:n #i(ta;o a la A9<
Funciones de la clase Robot) Kttp)00robocode,source@orge,net0docs0robocode0 - void aKead 8double distancia9) Mueve el robot Kacia adelante8a donde apunte9, - void bac3 8double distancia9) ?o mismo. pero Kacia atrAs, - void @ire 8double potencia9) -ispara con la potencia especi@icada, - double getLeading89) devuelve la direccin a la /ue apunta el robot8en grados9 - double getM890 double getN89) -evuelve la posicin M 8ancKo9 o N8alto9 - void turnGun?e@t8double grados9) gira el ca*n a la iz/uierda - void turnGunRigKt8double grados9) gira el ca*on a la derecKa - void turn?e@t8double grados9) gira el robot a la iz/uierda - void turnRigKt8double grados9) gira a la derecKa - void turnRadar?e@t8double grados9) gira el radar a la iz/uierda - void turnRadarRigKt8double grados9) lo gira a la derecKa

:n #i(ta;o a la A9<
Eeguimos con la clase Robot) - void setAdjustGunForRobot<urn8boolean independiente9 - void setAdjustRadarForRobot<urn8boolean independiente9 "stas dos @unciones Kacen /ue el ca*n o el radar se vuelvan independientes del movimiento del robot. es decir. si el robot gira. el ca*n0radar no gira, - void setAdjustRadarForGun<urn8boolean !ndependiente9) Kace /ue el Radar sea independiente del ca*n,

- void scan89) vuelve a comprobar si detecta un robot 8usada en la @uncin onEcannedRobot Kace /ue esta comience a ejecutarse de nuevo9

:n #i(ta;o a la A9<
"ventos)

- void run89) "s el mOtodo principal. en el se ejecutan los movimientos bAsicos del robot

-void onEcannedRobot8EcannedRobot"vent event9) se llama cuando el radar detecta a otro robot - void onLitG+Gullet8LitG+Gullet"vent event9) esta @uncin se llama cuando el robot recibe un impacto de bala, - void onLitRobot8LitRobot"vent event9) esta se llama cuando cKocamos con un robot - void onLitPall8onLitPall"vent event9) se llama cuando el robot cKoca contra un muro

%=ercicio 1
- Robot 3ami3aze) Gira Kasta /ue detecta un enemigo + cuando lo Kace se lanza a por Ol. + cuando cKoca comienza a disparar con la mA6ima potencia,

%=ercicio 6
- Robot /ue avance Kasta el muro superior + una vez llegue se desplace a la derecKa Kasta /ue cKo/ue + se dO la vuelta. + as sucesivamente. el ca*n apuntarA Kacia abajo. para /ue dispare siempre /ue detecte un enemigo,

Mane=ando e#ento(
"n las @unciones /ue reciben un evento como parAmetro de entrada. podemos acceder a los elementos de dicKo evento para obtener in@ormacin /ue nos pueda resultar relevante. por ejemplo) (lase LitRobot"vent - double getGearing89) -evuelve la orientacin del robot con el /ue Kemos cKocado. con respecto a nosotros 8-#BC Q getGearing Q #BC9 -double get"nerg+89) -evuelve la energa del robot con el /ue cKocamos -boolean isM+Fault89) -evuelve verdadero si Kemos provocado el cKo/ue

(lase LitG+Gullet"vent - double getGearing89 - double getPo2er89) -evuelve la potencia de la bala - double getVelocit+89) -evuelve la velocidad de la bala

Mane=ando e#ento(
"l evento mAs usado. +a /ue es el /ue mAs posibilidades o@rece + donde se pueden realizar mAs cAlculos,

(lase EcannedRobot"vent - double getLeading89) devuelve la orientacin del robot detectado. en grados 8C Q getLeading Q %FC9 - double getGearing89 - double get-istance89) devuelve la distancia con el robot detectado - double get"nerg+89) devuelve su energa - double getVelocit+89) devuelve la velocidad del robot

%=ercicio 3
- Robot /ue dispare con mAs o menos @uerza 8+ por lo tanto menos o mAs velocidad9 seg;n la distancia a la /ue estO el enemigo. asi como si este se esta moviendo o no 8si no se mueve podemos disparar mAs lento9, AdemAs debemos tener en cuenta la energa del enemigo. si es mu+ poca 8menor de %9 no es conveniente desperdiciar energa con un disparo de potencia ma+or,

%=ercicio >
- !gual /ue el ejercicio %. pero ademAs nuestro robot debe detectar la direccin en la /ue se mueve el enemigo para girar el ca*n en dicKa direccin, 1ota) no es necesario realizar cAlculos complejos. basta con estimar a ojo por donde estarA el enemigo,

%=ercicio ?
- Mejora del 3ami3aze 8ejercicio #9) vamos a reutilizar el robot /ue realizamos en el primer ejercicio. pero esta vez controlaremos /ue el robot solo avance lo necesario cuando embista a un enemigo. + /ue ademAs detecte si el golpe lo da o lo recibe. + en el caso de /ue lo reciba se gire en la direccin en la /ue estA el enemigo. + Kaga lo mismo cuando le impacte una bala, Pista) ?a @uncin double getGearing89 puede sernos mu+ ;til. pues nos da la orientacin de nuestro enemigo. pero con respecto a nuestra propia orientacin,

@ ahoraAAA

RA (SMGA<!RT

MucKas gracias por vuestra atencinTT


Este programa ha sido realizado con f i nanciacin del Proyecto de Mejora Docente "Consolidacin de los conocimientos de programacin mediante el desarrollo de videojuegos: una experiencia en el ao de Turing" (cdigo AAA_13_019) de la Convocatoria de Actuaciones Avaladas para la Mejora Docente, Formacin del Profesorado y Difusin de Resultados de la Unidad de Innovacin Docente de la Universidad de Cdiz, Curso 2012/2013, cuyos fondos proceden de la Consejera de Economa, Innovacin, Ciencia y Empleo de la Junta de Andaluca.

También podría gustarte