EL SISTEMA En Robocode hay dos elementos principales, los robots y las batallas. Las batallas se llevan a cabo en el terreno de combate entre los robots, que juegan por sí mismos bajo una programación concreta que define su comportamiento.
Todas las clases generadas en Robocode extienden de la clase robocode.Robot, con métodos que permiten interactuar con el juego.
Ejemplo de una clase robot:
package<nombre equipo>;importrobocode.*;importjava.awt.Color;publicclass IaUdec extendsRobot{publicvoid run(){
setColors(Color.red,Color.blue,Color.green);while(true){// Remplazar las siguientes líneas por el comportamiento deseado
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);}}publicvoid onScannedRobot(ScannedRobotEvent e){
fire(1);}publicvoid onHitByBullet(HitByBulletEvent e){
turnLeft(90- e.getBearing());}}
Un robot básico tiene por defecto manejadores de eventos. Todo tanque heredera de la clase Robot, estos métodos se pueden sobrescribir y así añadir funcionalidad a los robots para cuando dichos eventos se disparen.
A la hora de programar los robots hay que tener en cuenta 3 áreas fundamentales del código .
Un área en la que se definen las variables de clase, disponibles dentro del método run(), así como en el resto implementados.
El propio método run(), que es llamado por el gestor de combate para comenzar la vida del robot y típicamente se divide en dos áreas:
Área en laque q se definen las cosas que sólo se harán una vez por cada instancia del robot.
Área dentro de un while infinito en la que se define la acción repetitiva en la que se verá envuelto el robot.
Métodos auxiliares para usar por el robot dentro de su método run(). En esta zona también se ponen los manejadores de eventos que se quieran implementar.
Órdenes que se pueden utilizar:
public void ahead(double distancia): Mueve el robot hacia delante la distancia pasada por parámetro. Se ejecuta inmediatamente y no devuelve nada hasta que haya finalizado el movimiento. En el caso de que el robot colisionara con algún obstáculo se detendría.
public void fire(double potencia): Dispara una bala, el rango válido de potencia va desde 0.1 a 3. La bala sigue el trayecto al que apunte el cañón. Si se alcanza al enemigo causará el daño equivalente a (4*potencia). Se ejecuta inmediatamente. Además, la energía que se le otorgue a la bala, se restará automáticamente de la energía del propio robot.
public void turnLeft(double grados) : Rota el tanque/robot “n” grados a la izquierda. Se ejecuta inmediatamente, o devuelve nada hasta que finaliza.
public void turnRight(double grados): Rota el tanque/robot “n” grados a la derecha. Se ejecuta inmediatamente, no devuelve nada hasta que finaliza.
public void turnGunLeft(double grados): Rota el cañón del robot y el radar “n” grados a la izquierda. Se ejecuta inmediatamente, no devuelve nada hasta que finaliza.
public void turnGunRight(double grados): Rota el cañón del robot y el radar “n” grados a la derecha. Se ejecuta inmediatamente, no devuelve nada hasta que finaliza.
public double getHeading(): Devuelve la dirección a la que apunta el frente del robot en grados (de 0 a 360).
Los eventos que se podrán utilizar son los siguientes:
ScannedRobotEvent: se dispara cuando el radar detecta un robot a su paso por una zona angular. BulletHitEvent: se lanza cuando nuestro robot alcanza con un disparo a uno de los enemigos. HitRobotEvent: se lanza cuando nuestro robot colisiona con un robot enemigo. HitWallEvent: se dispara cuando el robot choca contra un muro de los que limitan el campo de batalla. HitByBulletEvent: se lanza cuando nuestro robot es alcanzado por un disparo. Implementación
EL SISTEMA
En Robocode hay dos elementos principales, los robots y las batallas. Las batallas se llevan a cabo en el terreno de combate entre los robots, que juegan por sí mismos bajo una programación concreta que define su comportamiento.
Todas las clases generadas en Robocode extienden de la clase robocode.Robot, con métodos que permiten interactuar con el juego.
Ejemplo de una clase robot:
Un robot básico tiene por defecto manejadores de eventos. Todo tanque heredera de la clase Robot, estos métodos se pueden sobrescribir y así añadir funcionalidad a los robots para cuando dichos eventos se disparen.
A la hora de programar los robots hay que tener en cuenta 3 áreas fundamentales del código .
Órdenes que se pueden utilizar:
Los eventos que se podrán utilizar son los siguientes:
ScannedRobotEvent: se dispara cuando el radar detecta un robot a su paso por una zona angular.
BulletHitEvent: se lanza cuando nuestro robot alcanza con un disparo a uno de los enemigos.
HitRobotEvent: se lanza cuando nuestro robot colisiona con un robot enemigo.
HitWallEvent: se dispara cuando el robot choca contra un muro de los que limitan el campo de batalla.
HitByBulletEvent: se lanza cuando nuestro robot es alcanzado por un disparo.
Implementación