grupo de usuarios de db2 argentina
descarga java
sourceforge
descarga eclipse
descarga firefox
linux
  UTNFRRe
argentina



 
 
Preguntas Frecuentes en el Robocode

                           
Temas:

  • Instalación
  • Física del Juego
  • Programando tu Robot

 

Instalación

No puedo instalar Robocode. ¡Por favor, ayúdenme!
Primero debes verificar tener instalado Java en tu computadora. Para comprobarla, ejecuta el comando: Java – la versión debe ser 1.3 o superior. Si no, al sitio de SUN y descarga la ultima versión. Después de, te cercioras de haber descargado el archivo correcto robocode-setup.jar. Ejecutar el archivo con un doble-click, o si deseas hacerlo manualmente, ejecutar el comando siguiente: Java -jar robocode-setup.jar.
 Lanzará un instalador que instale el robocode. El instalador crea los iconos para ejecutar Robocode, pero puedes ejecutarlo desde un archivo “.bat” (o desde Linux) en el directorio de /robocode.
 
¿He descargado un robot desde la del Web, pero no sé utilizarlo, porque no aparece en ningún lugar? ¿Podrías ayudarme, por favor?
 Seleccionas el menú robot--> luego te diriges a “import download robot” del menú, después selecciona el archivo “.jar” de robot que deseas importar.

¿Qué tengo que hacer para ver el código de fuente de un robot?
 Puedes hacer dos cosas. ¿Si abres el archivo del robot “.jar” con WinZip? (o una utilidad similar) encontrarás el código fuente allí (si se asume que, por supuesto, el robot es fuente abierta). La otra manera es abrir la ventana del editor en Robocode, y utiliza el comando en el menú archivo de extraer el código fuente. También, si tienes la Java SDK entonces puedes extraerla con el jar.

¿Puedo jugar Robocode en línea?
Robocode no es un juego “en línea”, así que no puedes, por ejemplo, compartir una batalla con tus amigos en tiempo real en Internet.
Pero puedes cargar tus bots en el RobocodeRepository (o enviarlos por email) unirte a competiciones existentes u organizar una con tus amigos.

He visto que muchos bots están empaquetados en archivos “.jar”. ¿Cómo empaqueto mi BOT?
Seleccionar, “Robot --> y luego “package robot for upload” del menú, entonces incorpora los detalles de tu robot cuando te indique.

Cuando pruebo mis bots, Robocode es lento. ¿Hay una manera de ejecutar las batallas más rápidamente?
Cuando estás probando tu robot, deseas ejecutar muchas batallas en un a corto plazo. Minimiza la pantalla principal de Robocode para hacer que se ejecute las batallas de forma más rápida.

 

Física del Juego

¿Puedo disparar balas con un poder mayor a 3 o menor que 1?
La respuesta es no y sí. No puedes disparar balas con poder mayor que 3, sino que puedes disparar balas con poder de hasta sólo 0.1.
 Si llamas una función de disparo (IE. el setFire) con un valor mayor que 3, Robocode ajustará a 3, y si lo llamas con un poder más bajo de 0.1, automáticamente se ajustará a 0.1.

 ¿Qué tan rápido puede viajar una bala?
Una bala viaja a una velocidad  de entre 11 y 19.7 dependiendo de la energía. Cuanto más poderosa es la bala, es más lenta. La fórmula para calcularla la velocidad es = 20-3*(poder del disparo)

¿La velocidad del robot afecta a la velocidad de la bala?
 No. La velocidad de la bala no es afectada por velocidad del robot.

 ¿Cuál es el rango de una bala?
 Una bala no tiene rango. Esta continúa hasta que golpea a un robot o una pared.

Deseo disparar una bala en cada turno, pero no puedo. ¿Por qué?
Cada vez que disparas el arma genera un cierto calor. Debes esperar hasta que este se enfrié para volver a disparar. Si das una orden del fuego cuando tu arma esta caliente, no hará nada. El calor generado por un tiro es 1 + (potencia de fuego/5).
El arma se refresca con un índice que es defecto de 0.1 por vuelta (se puede cambiar este parámetro cuando se inicia una la batalla, pero usualmente nadie lo hace). Significa que puedes disparar una bala cada 16 ticks.

¿Cuánto daño hace una bala?
Ver la pregunta siguiente.

¿Cómo gano o pierdo energía?
Pierdes energía cada vez que golpeas una pared, tú eres golpeado por una bala enemiga, pegaste a enemigo, o disparas tu arma.
La cantidad de energía que pierdes por ser golpeado es: 4 * (energía de la bala) + 2 * máximo (energía de la bala - 1, 0).
La cantidad máxima es de 16.
Cuando disparas, pierdes una cantidad de energía igual a la energía de la bala disparada. Cuando una de tus balas golpea a un enemigo, obtienes una cierta energía de tu enemigo (consigues 3 * energía de la bala). Cuando golpeas a un enemigo, cada robot pierde 0.6 en daños. Cuando golpeas una pared, el robot tendrá un daño de (ABS (velocidad) * 0.5 - 1, 0).

Algunas veces quedo deshabilitado. ¿Qué sucede?
No puedes matarte a ti mismo, por eso cuando tu energía cae a cero porque golpeas una pared o te dispararon, tu robot queda deshabilitado. No podrás moverte ni disparar. Si eres bastante afortunado y una de tus balas en el aire golpea a un enemigo, conseguirás un poco de energía y te recuperarás de estado de deshabilitado.

¿A que velocidad me muevo?
Puedes moverte a una velocidad máxima de 8. ¿Puedes modificar (descender) tu velocidad máxima usando setMaxVelocity()? Observa que tu robot acelerara siempre para alcanzar su máxima velocidad.

¿Cuan rápidamente puedo acelerar?
Aceleras en 1 por tick, y desaceleras en 2 por tick. Por ejemplo, si te estás moviendo a una velocidad de 8 e inviertes tu dirección tus velocidades serán [6.4.2.0.1.2.3.4.5.6.7.8].

¿Cuan rápido puedo dar una vuelta?
Cuanto más rápidamente vas, más lentamente das vuelta. La fórmula para calcularla en  grados es (10 - 0.75 * ABS (velocidad)).

¿Cuál es el tamaño de un robot?
 El tamaño de un robot es de 36x36. Se modela pues un cuadrado que no rota.

 Se parece que Robocode no sigue la física estándar. Si mi velocidad es 0 y acelero (aceleración = 1) mi velocidad final es 1, pero debe ser 0.5. ¿Qué sucede?
El Tiempo en robocode está medido en “ticks”; no este no es continuo como el tiempo debería ser. Primero se calcula la aceleración, luego la velocidad, y después la posición.
Por lo tanto si paras en la posición 0 y aceleras a 1, tu siguiente velocidad será 1 y tu posición también será 1.

  ¿Cómo puedo detectar cuando un enemigo ha disparado?
No hay manera directa de detectar cuando un enemigo ha disparado, pero tú puedes deducirla monitoreando el descenso de la energía del enemigo. Un descenso de  entre 0.1 y 3 significa generalmente que disparo una bala (puede haber otras razones, tales como un disparo recibido o una pared golpeada).
 Los golpes de la pared son (más o menos) perceptibles también. Una desaceleración >2 significa que el robot golpeó una pared (u otro BOT). Un <= 2 de la desaceleración puede ser simple un robot que freno, o golpeando una pared  a una velocidad = 2 aunque golpear una pared a esa velocidad no causará ningún daño.

 ¿Cómo puedo detectar la posición de una bala enemiga?
 No puedes. No hay manera de saberlo, directamente o indirectamente. Pero por supuesto, puedes deducirlo siempre…

¿Cuan rápidamente puedo dar vuelta a mi arma?
El arma da vuelta en 20 grados por tick.

¿Cómo rápidamente puedo dar vuelta a mi radar?
Da vuelta a 45 grados por tick.

¿Puedo especificar la posición inicial de mi BOT?
No. Los bots se posicionan  aleatoriamente en el campo al inicio de cada batalla.

 

Programando tu Robot

Estoy utilizando b=setFireBullet(1) para disparar, y entonces deseo obtener las coordenadas de la bala, pero cuando intento imprimirlos usando System.out.println (b.getX () + b.getY ()) obtengo un error. ¿Qué esta mal?
El método setFireBullet() crea el objeto de la bala, pero la bala no sale realmente de tu arma hasta el tick siguiente, así que no puedes hacer el getX () o el getY () en la bala hasta entonces.
Si la cambias al fireBullet() debe ser aceptable, porque la función no responderá hasta que la bala está en el aire. Si el fireBullet() no trabaja bien, tendrás que idear otro método para cerciorarte de que no se realiza bien el getX() y el getY().

¿Por qué hay dos funciones para getBearing() por ejemplo - uno en el rad y uno grados? ¿Hay aumento del funcionamiento si utilizo el rad en vez de grados?
No hay ventaja para utilizar uno o el otro. Generalmente, la gente comienza a usar grados (solo porque se siente más cómoda) y más adelante cambia a radianes (porque los cálculos son más fáciles ya que puedes utilizar las funciones trigonométricas incorporadas de Java). Debes decidir utilizar radianes o grados (mezclarlos no son una buena idea).

Necesito mostrar mis acciones y variables de mis bots. Vi que todos utiliza out.println (“…”). ¿Pero donde es eso impreso?
Imprime a la consola del robot. Cuando ejecutas la batalla, click justo en el botón en la derecha de la pantalla que muestra el nombre de tu robot para abrir la consola.

 


 

Tutoriales

  1. Introducción a POO
  2. UML
  3. JAVA
  4. Intro a Robocode
  5. Intalación
  6. Estrategias
  7. Instalación
  8. Programación
  9. Matemática
  10. Trabajo Práctico
  11. Diagrama de Clases

VIDEOs tutoriales

  1. MI PRIMER ROBOT
  2. NETBEANS
  3. ECLIPSE

Descargas

  1. Robocode

Torneo

  1. Reglas
  2. Formato
  3. Ficha de Inscripción