Robocode – DuocUC

Robocode es un simulador de inteligencia artificial donde se programan un conjunto de tankes con el famoso lenguaje java, la idea es que desarrolles la mejor estrategia para vencer al enemigo, y utilices de la mejor forma todos los metodos y recursos que te oterga la clase Robot o AdvanceRobot (para robots avanzados) la diferencia de ambas clases es que la primera debe terminar un proceso para comenzar con el siguiente en cambio la segunda puede ejecutar varios procesos simultaneamente.

Robocode es un juego interesante y super adictivo, diganmelo a mi?, el unico requerimiento es el conocimento de java lo demas dejenselo a su imaginacion, ahora adjunto un par de tutoriales y la direccion para que puedas descargar la ultima actualizacion del juego, los mantendre informados con actualizaciones y nuevas guias, nos vemos.

GUIAS Y OTRAS COSAS:

  • robowiki (es la wiki oficial del juego).
  • Tutorial Robocode (esta en formato pdf y es mas o menos bueno mucho codigo y poca explicacion de los metodos).

DESCARGA EL SOFTWARE:

  • Robocode 1.1.3 (Descarga el prgrama).
  • JDK (es necesario para compilar los robots que vallas creando).

por ahora eso espero te sirva como para empezar a ver en que consiste, si ya sabes algo de programacion en java no te desilucionaras pues es bastante entretenido ver el aspecto del robot que se va modificando con el tiempo.

Experniencia Concurso Robocode – DuocUC.

lamentablemente no tengo ni siquiera una imagen de mi dupla cuando participe en el primer concurso de robocode 2006, el primer paso que debimos afrontar fue el competir con compañeros de nuestra propia sede de los cuales solo fuimos 4 parejas, bastante pocos comparados con otras sedes de Duoc, bueno los Robots eran Datali (a mi parecer el mejor), Robobox (Horriblemente poco original, pues era lo mimo que un robot por defecto cuando creas tu primer robot), Nan (parecido al Tracker que viene en los robots de ejemplo de Robocode), y el de nosotros Cytrix (un robot parecido al robot de ejemplo Ramfire pero con muchas mejoras por parte de nosotros), bueno esos eran nuestros rivales la cosa es que nosotros estabamos bastante animados pero a la vez también un poco nerviosos por los resultados, puesto que los creadores de Nan nos adviertieron que su robot era superior al que habiamos creado, que por poco menos la wea se teletransportaba jajaja y nosotros los muy giles les hicimos caso y estabamos muy psicoseados por el asunto al final los resultados demostraron que en el tercer lugar sería para Datali (lo que considero una injusticia puesto que 1 contra 1 era casi invensible pero como el concurso fue de 4 contra 4 no se la pudo), en el segundo lugar teniamos a Nan (lo cual me causo un chiste jajaja pobrecitos) y en el primer lugar Cytrix (los mas desesperanzados) bueno los premios fueron una pendrive de 512 MB para el primer lugar, segundo lugar una pendrive de 256 y tercer lugar una pendrive de 128 (si es que no me equivoco). De todas maneras la pase bien junto con el Francisco (mi colega con el que construimos a cytrix) en ese concurso, los nervios nos dominaron durante toda la competencia pero poco a poco nos fuimos relajando.

pero esto no termina aqui, pues luego debimos competir con todas las demas sedes de DuocUC lo que nos puso ahun mas atemorizados jajaja, el asunto fue que esta vez el numero de participantes se incremento de manera considerable, pues eran 2 clasificados por sede y aproximadamente serian unos 16 grupos participando en la sede de plaza oeste, ahora cuando fuimos a participar, llegamos justo a tiempo puesto que el Francisco no sabia donde quedaba entonces nos retrasamos un poco, al llegar vimos a todos con caras de ganar pero se notó la ausencia del competidor mas importante para nosotros, me refiero a los creadores de Nan, obviamente no aceptaron su derrota pero de todas maneras mandaron su codigo para que lo compilaran y participaran, lo que fue un chiste jajaja, ya que todos los participantes sacaban arriba de 500 puntos en cambio Nan la primera vez saco 10 y luego en su segunda posibilidad no supero los 100 puntos una lastima, con el Francisco preferimos callar no decir nada sobre el robot de ellos para no dejarlos mal, bueno al final los 4 últimos participantes fueron TaxiDriver (si no me equivoco), el otro robot era Jackbouer, una replica exacta del robot de ejemplo Wall, el otro era Sinergia que hacia WaveSurfing (una estrategia que evade las balas enemigas, pero su código me resulta extraño puesto que solo presentaron su bytecode), y finalmente Cytrix, la cosa fue que perdimos contra Sinergia, quedando solo para pelear por el tercer lugar, ahí la suerte nos jugó una mala pasada, puesto que nosotros sabiamos que nuestro robot era débil contra esa estrategia pero no importa de todas maneras igual lo pasamos bien, luego deseabamos que ganara TaxiDriver puesto que nosotros sabiamos que al clone de Wall lo haciamos añicos , pero ahora la suerte volvio de nuestro lado, ya que ocurrio lo que queriamos, ganandole finalmente a Jackbouer y obteniendo el tercer lugar, luego el segundo lugar fue para Taxidriver y el primero fue para Sinegia, al momento de escoger los premios, los del primer lugar se escogieron un par de pendrive´s con reproductor de MP3, el segundo lugar se escogio un router d-link y un Home Theater, y nosotros sacamos un router d-link(yo bastian) y un mouse optico inalambrico (Francisco) fue asi ya que el francisco tenia un router y solo le faltaba el mouse inalambrico, no fue por razones de acabronamiento porsiacaso, …… bueno bueno y eso fue lo que ocurrio en la sede de plaza oeste, ahora se viene el segundo concurso de robocode pero esta vez nos separaremos, cuales fueron las razones, solo fue por estar con nuestros amigos mas intimos y ademas porque queremos enseñar lo que sabemos a otros sin experiencia en el asunto de robocode, bueno espero poder tener fotos para la proxima ahora solo les dejo una noticia referente a este tema en la pagina de InfoDuoc y ademas con los codigos de RamFire y Cytrix para que vean su similitud, ahora nos estamos viendo para el proximo relato de Robocode2 bye.

Codigo de Cytrix

package bf;
import robocode.*;
import java.awt.Color;
/*Cytrix: Robot creado por Bastian Gutiérrez y Francisco González*/
/*ADVERTENCIA: Robot extremadamente agresivo, no compile sin tomar medidas
de precaucion para su HARDWARE!!
*/
public class Cytrix extends AdvancedRobot
{

public void run()
{
setColors(Color.green,Color.green,Color.green);
while(true)
{
//gira Radar en 360ª para detectar enemigo
turnRadarRight(360);
}
}

public void onScannedRobot(ScannedRobotEvent e)
{
//Si la energia del enemigo es mayor que la de cytrix, este se alejara 100px.
if((getEnergy()<70)&&(e.getEnergy()>getEnergy()))
{
setAhead(e.getDistance()-100);
setTurnRight(e.getBearing());

double superapuntar=getHeading()+e.getBearing();
//la suma de cabezal mas viraje
double apuntar=anguloRelNorm(superapuntar-getGunHeading());
//Esto nos ayuda a girar la turreta!
if (Math.abs(apuntar)<=3)
{
turnGunRight(apuntar);

if (getGunHeat() == 0)
fire(Math.min(3 – Math.abs(apuntar), getEnergy() – .1));
}
else
turnGunRight(apuntar);
if (apuntar == 0)
scan();
}
//de lo contrario sera una lucha curpo a cuerpo
else
{
setTurnRight(e.getBearing());
setAhead(e.getDistance());
double superapuntar=getHeading()+e.getBearing();
//la suma de cabezal mas viraje
double apuntar=anguloRelNorm(superapuntar-getGunHeading());
//Esto nos ayuda a girar la turreta!
if (Math.abs(apuntar)<=3)
{
turnGunRight(apuntar);

if (getGunHeat() == 0)
fire(Math.min(3 – Math.abs(apuntar), getEnergy() – .1)+3);
}
else
turnGunRight(apuntar);
if (apuntar == 0)
scan();
}
}

public void onWin(WinEvent e)
{
turnRight(36000);
}

public double anguloRelNorm(double angulo)
{
if ((angulo>-180)&&(angulo<=180))
return(angulo);
double anguloF=angulo;

while (anguloF<=-180)
anguloF+=360;
while (anguloF > 180)
anguloF-=360;
return(anguloF);
}
}

Codigo de RamFire

ackage sample;
import java.awt.Color;
import robocode.*;
/**
* RamFire – a sample robot by Mathew Nelson, and maintained by Flemming N. Larsen
*
* Drives at robots trying to ram them.
* Fires when it hits them.
*/
public class RamFire extends Robot {
int turnDirection = 1; // Clockwise or counterclockwise

/**
* run: Spin around looking for a target
*/
public void run() {
// Set colors
setBodyColor(Color.lightGray);
setGunColor(Color.gray);
setRadarColor(Color.darkGray);

while (true) {
turnRight(5 * turnDirection);
}
}

/**
* onScannedRobot: We have a target. Go get it.
*/
public void onScannedRobot(ScannedRobotEvent e) {

if (e.getBearing() >= 0) {
turnDirection = 1;
} else {
turnDirection = -1;
}

turnRight(e.getBearing());
ahead(e.getDistance() + 5);
scan(); // Might want to move ahead again!
}

/**
* onHitRobot: Turn to face robot, fire hard, and ram him again!
*/
public void onHitRobot(HitRobotEvent e) {
if (e.getBearing() >= 0) {
turnDirection = 1;
} else {
turnDirection = -1;
}
turnRight(e.getBearing());

// Determine a shot that won’t kill the robot…
// We want to ram him instead for bonus points
if (e.getEnergy() > 16) {
fire(3);
} else if (e.getEnergy() > 10) {
fire(2);
} else if (e.getEnergy() > 4) {
fire(1);
} else if (e.getEnergy() > 2) {
fire(.5);
} else if (e.getEnergy() > .4) {
fire(.1);
}
ahead(40); // Ram him again!
}
}

Comments

  1. jajaja yo soy una de las parejas de esa competencia el de NaN.

  2. Cinthia Moran says:

    Gracias por la ayuda… la necesito para unpinche proyecto escolar

  3. cualquier cosa en que te pueda ayudar solo consulta, no tendremos problemas en responderte

  4. una consulta como le hago para q el robot kede dentro de un equipo atake a los enemigos y tambien si puedes el codigo de manejo con el mouse
    gracias espero respuestas.

  5. lo siento, pero la verdad estaba en primero del instituto cuando realicé aquel concurso y actualmente ya ni me acuerdo como lanzar una bala, espero disculpes pero sigue patiperreando por internet, lo mas seguro es que encuentres algo por ahi

  6. Hola,
    tengo un problema con mi programa de robocode o mi compilador!!

    copie el codigo de Cytrix y lo pegue en un docuemnto en limpio, cree el package con el nombre bf y todo, pero no me compila el codigo, que puedo hacer??
    espero puedan colaborarme!!

  7. Ese error se debe a que al pasar el texto desde mi blog al editor de robots que viene en robocode, los caracteres no son reconocidos, yo por lo menos tuve problemas con el signo menos (-) asi que borra todos los signos menos y cambialos escribiendolos desde tu teclado, saludos

  8. mauricio says:

    k onda mens no pues tengo k acer mi tanke de guerra y m falta muxo es para mi examen , nesesiito un poko de su ayuda por fa espro sus codigos

  9. necesito ayuda con robocode, lo intento instalar pero no funciona, y para arreglarlo me pide un archivo .exe el cual no lo trae, tendra alguna solucion

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: