Sie sind auf Seite 1von 8

Introduccin a la programacin de robots para Robocode.

Grupo de investigacin en Sistemas Inteligentes y Minera de Datos Departamento de Sistemas Informticos. Universidad de astilla!"a Manc#a

1 Introduccin a Robocode
Robocode es un juego educativo $pen Source escrito en %ava, en el que los competidores han de disear y programar sistemas de control para unos tanques (robots), que compiten con el objetivo de eliminar al resto de adversarios. l juego transcurre en un campo de batalla en dos dimensiones como el que muestra la ilustracin 1, en la que pueden apreciarse ! de estos robots, y su duracin se mide en turnos y n"mero de rondas. #spectos como el tamao del campo de batalla o el n"mero de rondas, pueden ser con$igurados por el usuario desde el propio entorno. #dem%s, el tiempo real empleado para cada turno, y por tanto para cada partida, puede ser regulado (barra de despla&amiento en la parte in$erior de la ilustracin 1).

Ilustracin '( aptura de pantalla del )uego Robocode 'ara llevar a cabo una batalla es necesario especi$icar, como m(nimo, el n"mero y tipo de robots que van a tomar parte en ella. )a ilustracin * muestra la ventana de con$iguracin de una batalla (men" Battle->New). n ella puede apreciarse una lista con los distintos robots agrupados en paquetes (&vailable Robots), y los seleccionados (Selected Robots). )a con$iguracin de las batallas tambi+n puede ser almacenada,le(da desde un archivo.

Ilustracin .( onfiguracin de una batalla Robocode proporciona, adem%s, la posibilidad de hacer un seguimiento de los robots e incluso de llevar a cabo depuracin de los mismos. -ediante el botn pause*debug (parte in$erior i&quierda de la ilustracin 1), el usuario puede activar el control de los turnos mediante el botn +e,t -urn (que tambi+n puede observarse en la ilustracin 1). #dem%s, al pulsar sobre el nombre de un robot participante aparece una ventana (ilustracin .) en la que se muestra la salida generada por el mismo.

Ilustracin /( Salida generada por un robot

* )as reglas del juego


/%sicamente, un robot lleva a cabo disparos para daar a los adversarios aunque, eventualmente, tambi+n puede valerse de colisiones. 'or otra parte, cada robot cuenta con una energ(a inicial (100 unidades) que desciende cuando es alcan&ado por un disparo o colisiona con otro robot, y es destruido cuando esta energ(a desciende hasta 0 unidades.

)os disparos e$ectuados por un robot tienen asociada una energ(a, denominada energa de disparo 01D2. 1e dicha energ(a depende la velocidad de la bala, que se obtiene como2 3elocidad de la bala 4 .5 6 / 7 1D. )as consecuencias del disparo tambi+n dependen de su energ(a. #s(, el da8o o p+rdida de energ(a producido en el adversario en caso de acierto se calcula seg"n la e3presin2 da8o 4 9 7 1D: si 1D 4 ': da8o 4 9 7 1D ; . 7 01D 6 '2: si 1D < ': mientras que, tambi+n en caso de acierto, el tanque que ha disparado e3perimenta un incremento en su energ(a o recuperacin que viene dado por2 recuperacin 4 / 7 1D. 'or otra parte, un tanque no puede disparar si la temperatura de su ca8n 0- 2 es mayor que 5. 4n disparo produce un aumento en el calentamiento en el can tal que2 calentamiento 4 ' ; 1D: lo que hace necesario un equilibrio entre la energ(a de los disparos y la $recuencia de +stos, ya que la tasa de en$riamiento del can, que es un par%metro del juego, se $ija a valores relativamente bajos (por de$ecto a 0.1 unidades,turno). n cuanto a las colisiones, +stas producen una p+rdida de energ(a de 0.5. n relacin al sistema de puntuacin, las batallas constan de un n"mero determinado de rondas, y el ganador $inal es aquel que consigue una mayor puntuacin global. 1icha puntuacin (Total Score) se obtiene como suma de varias componentes2 Survival Score( 6ada robot que est% presente en el campo de batalla suma !0 puntos cuando otro robot es destruido. Last Survivor Bonus( l "nico robot que quede por ser destruido suma 10 puntos e3tra por cada robot que haya sido destruido. Bullet Damage( )os robots suman un punto por cada grado de daos que hayan in$ringido a sus enemigos. Bullet Damage Bonus( 6uando un robot destruye a un enemigo, se le suma un *07 de todo el dao que se hi&o al enemigo. Ram Damage( )os robots suman * puntos por cada grado de daos conseguido al chocar con los enemigos. Ram Damage Bonus( 6uando un robot mata a otro mediante colisin, suma adicionalmente el .07 del dao que hi&o al enemigo. )a ilustracin 8 muestra una ventana con los resultados de una batalla entre dos tanques que se ha prolongado durante 10 rondas. #dem%s de los resultados mencionados, pueden observarse tres campos que contienen el n"mero de veces que el robot ha quedado en primero, segundo, o tercer lugar.

Ilustracin 9( Resultados de una batalla

6omo se ha comentado anteriormente, el objetivo de cada uno de estos tanques es ser el "nico superviviente a la batalla. 9in embargo, el sistema de puntuacin penali&a a aquellos que no han sido capaces de in$ringir daos al resto de contrincantes. 'or tanto, la estrategia ha de tener en cuenta este hecho y estar en$ocada tambi+n al ataque.

. )os robots
4n robot es un dispositivo hard:are que se caracteri&a por estar dotado de movilidad, y de elementos que le permiten interaccionar con el entorno en que se encuentra. stos elementos se dividen en dos grupos2 1) Sensores2 ;ue son los que le suministran in$ormacin sobre el entorno. *) Actuadores2 ;ue son los que le permiten operar en +l. 4na parte esencial en el $uncionamiento de un robot es su sistema de control, que tiene como $inalidad determinar qu+ acciones ha de emprender +ste en $uncin de las entradas recibidas por los sensores y del objetivo con el que se ha diseado. n el caso de Robocode, los robots son simulados. momento, a la siguiente in$ormacin2 stos tienen acceso, en todo

6oordenada = de la posicin en el campo de batalla 6oordenada > de la posicin en el campo de batalla nerg(a actual del robot <elocidad actual del robot =rientacin del robot en grados =rientacin del can >emperatura actual del can >asa de en$riamiento del can =rientacin del radar

?a de tenerse en cuenta que el origen de las coordenadas = e > se encuentra en la parte in$erior i&quierda de la pantalla y que, en el caso de la orientacin, un %ngulo de 0@ hace re$erencia al norte, uno de A0@ al este, uno de 1B0@ al sur, y uno de *C0@ al oeste. 'or otra parte, un robot es capa& de detectar dos eventos, en cada uno de los cuales puede acceder a unos datos adicionales. l primero de estos eventos se produce cuando el esc%ner del robot detecta un enemigo, y el segundo cuando el robot es alcan&ado por una bala. n el primer caso, el robot puede acceder a la siguiente in$ormacin2

1istancia al enemigo =rientacin en grados del robot enemigo Dngulo entre la orientacin del robot y la posicin del enemigo nerg(a del enemigo <elocidad del enemigo

l segundo de los eventos se produce cuando el robot es alcan&ado por una bala. n ese caso, la in$ormacin adicional que est% disponible es2 l %ngulo entre la orientacin del robot y la procedencia de la bala 'otencia de la bala <elocidad de la bala

n relacin a las acciones que puede llevar a cabo el robot, +stas son cinco2

-overse hacia delante , atr%s una distancia (en p(3eles) determinada. Eirar hacia la i&quierda , derecha Eirar el can hacia la i&quierda , derecha. Eirar el radar hacia la i&quierda , derecha. 1isparar con una determinada potencia.

>odos los robots de Robocode tienen las mismas caracter(sticas $(sicas. s decir, tienen las mismas propiedades y pueden llevar a cabo las mismas acciones de un modo similar. 4na descripcin detallada de la $(sica de los robots puede consultarse en la p%gina2 http2,,test:iFi.roborumble.org,:,inde3.phpGtitleHRobocode,EameI'hysics

8 'rogramacin de los robots


6omo se coment anteriormente, Robocode es una plata$orma escrita en %ava, por lo que los robots tambi+n han de ser programados en este lenguaje. )a clase robocode.Robot implementa todas las caracter(sticas gen+ricas de un robot en Robocode. 6ualquier clase que implemente un robot ha de e3tender dicha clase y aportar la $uncionalidad relativa al sistema de control. )a ilustracin ! muestra el esquema del cdigo de un robot. 6omo puede observarse, han de implementarse tres $unciones principales. n la primera de ellas run(), se especi$ica el comportamiento base del robotJ la segunda es un evento que se produce cada ve& que se detecta un enemigo con el esc%nerJ y la tercera, el evento que se produce al ser alcan&ado el robot por una bala.

package base; import robocode.HitByBulletEvent; import robocode.Robot; import robocode.ScannedRobotEvent; public class NuevoRobot extends Robot { public void run() {} public void onScannedRobot(ScannedRobotEvent e) {} public void onHitByBullet(HitByBulletEvent e) {}

K Ilustracin ?( 1s@uema bsico de programacin de un robot

>anto los m+todos de acceso a la in$ormacin b%sica del robot, como los asociados a las acciones, $orman parte de la clase Robot, por lo que pueden ser invocados desde cualquier parte del cdigo. jemplos de estos m+todos son getEnergy(), que devuelve la energ(a del robot, getVelocity(), que devuelve su velocidad, o ahead(distance) que despla&a al robot hacia adelante. 'or el contrario, tanto los datos relativos a la deteccin de un robot enemigo, como los relativos al hecho de ser alcan&ados por una bala, van asociados al evento correspondiente. #s(, por ejemplo, si e es el evento que captura deteccin de un robot , es posible averiguar la distancia a la que se encuentra dicho robot desde dentro del manejador onScannedRobot(ScannedRobotEvent e) mediante la $uncin e.getDistance(). 4na descripcin detallada de la clase Robot puede encontrarse en el )avadoc, que se proporciona en la propia distribucin de Robocode, o en la p%gina2 http2,,robocode.source$orge.net,docs,robocode,

! Robot ejemplo
)a ilustracin 5 muestra la implementacin sencilla de un robot ejemplo. 6omo puede apreciarse, se han implementado los tres m+todos mencionados anteriormente. #s(, en el m+todo run(), adem%s de iniciali&arlo (solo el color), se le indica que gire el radar continuamente. 'or otra parte, cuando el robot detecta un enemigo con el radar, (onScannedRobot(ScannedRobotEvent e)) e3trae el %ngulo que tiene que girar para dirigirse hacia +l, dispara (no mueve el can porque en este caso siempre apunta al $rente), y se mueve hacia +l. 'or "ltimo, si el robot es alcan&ado por una bala, cambia su direccin 1B0 grados, y se mueve *0 unidades en direccin opuesta.

package ejem lo; !! "m orta todas las clases necesarias import robocode.#; !! "m orta la clase $olor import java.a&t.$olor; ara ara im lementar un robot

oder de%inir los colores del robot

!! Robot de ejem lo public class Ejem lo extends Robot{ !## # $om ortamiento base del robot. # 'ueve el radar en busca de enemi(os. #! public void run() { !! )rimero, %ija los colores del robot. !! cuer o * ne(ro, ca+,n * blanco, radar * rojo set$olors($olor.B-.$/, $olor.0H"1E, $olor.RE2); !! -ue(o, (ira el radar en busca de enemi(os while (true) { !! 'ueve el radar a la derec3a en cada iteraci,n. turnRadarRi(3t(45); } } !## # $uando detecta un enemi(o, a unta, dis ara, # y lue(o se mueve 3acia 6l. #! public void onScannedRobot(ScannedRobotEvent e) { !! 7btiene el 8n(ulo 9ue tiene 9ue (irar ara diri(irse al !! donde 3a dectectado el enemi(o double an(ulo * e.(etBearin((); !! :ira el robot turnRi(3t(an(ulo); !! 2is ara %ire(;); !! Se mueve ;5 unidades a3ead(;5); } !## # $uando le alcan<an con una bala, cambia de direcci,n # y 3uye. #! public void onHitByBullet(HitByBulletEvent e) { !! :ira ;=5 (rados 1urnRi(3t(;=5); !! .van<a >5 unidades a3ead(>5); }

unto

Ilustracin A( Implementacin de un robot bsico

5 #dvanced Robots
)as acciones de los robots que e3tienden la clase robocode.Robot son bloqueantes. s decir, si se le indica al robot que gire A0 grados y avance, primero gira, y luego avan&a en l(nea recta. )os robots avan&ados son aquellos que e3tienden la clase robocode.AdvancedRobot. ntre sus caracter(sticas, destaca el hecho de que permiten la ejecucin de eventos no bloqueantes. #s(, por ejemplo, un robot avan&ado que ejecute las dos rdenes indicadas anteriormente, es decir, girar A0 grados y avan&ar, lo har(a describiendo una curva del mismo modo que lo har(a un coche. 1icha curva se describir(a hasta el momento en que la orientacin del robot hubiera cambiado A0 grados respecto con la orientacin inicial. #dem%s, los robots avan&ados presentan otras ventajas, como son el hecho de que permiten la edicin de eventos a medida, o la escritura de datos en archivos.

Das könnte Ihnen auch gefallen