Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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,
- 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);
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