Next Previous Contents

6. Construcción de arenas

En RealTimeBattle, es muy sencillo construir tus propias arenas. El lenguaje consiste en tan solo once comandos, y hay básicamente cuatro elementos de construcción: líneas, círculos, círculos interiores y arcos. Esto es debido primordialmente a razones de velocidad, ya que en el caso de las líneas y los círculos es muy fácil comprobar si se ha producido una colisión. Los círculos y los círculos interiores evitan que los robots entren o salgan respectivamente de un área circular. La línea y el arco detienen a los robots a lo largo del lado más extenso (la parte curva para el arco), pero no se realiza ninguna comprobación para el lado corto, por lo que tendrás que poner círculos en cada extremo de las líneas para convertirlas en objetos sólidos. Los comandos polygon, closed_polygon y poly_curve están concebidos para simplificar esta tarea, dando siempre como resultado un objeto apropiado.

Todos los ángulos están en radianes por defecto pero pueden cambiarse a grados con el comando angle_unit degrees.

Ten en cuenta que RealTimeBattle no comprueba si el fichero de arena proporciona una arena correcta, queda enteramente bajo tu responsabilidad. Sin embargo, producirá errores si existe alguna violación de las reglas del lenguaje.

Los ficheros de arena deben llevar la extensión .arena y ser almacenados en el directorio de arenas correspondiente donde RealTimeBattle pueda encontrarlos.

Los valores asignados a los coeficientes de rebote y dureza dados a los comandos de creación de paredes determinan el material del que están hechos. Ambos valores están comprendidos entre 0 y 1. Los muros más duros producirán más daños en los robots que choquen contra ellos, y un coeficiente de rebote más elevado hará que reboten mejor.

Es una buena idea examinar las arenas incluidas y aprender de los ejemplos.

6.1 Comandos de la arena

Un comando consiste en el correspondiente nombre de comando y sus argumentos separados por espacios en blanco. ĦAsegúrate de usar el número de argumentos correcto!

En la lista de comandos, los argumentos se indican entre corchetes.

scale [value]

Este valor multiplicado por la escala de la arena dará el factor de la escala, por el que todas las coordenadas quedan multiplicadas. Este comando, de existir, debe ser el primero en aparecer dentro del fichero. El valor por defecto es 1.0.

angle_unit [unit]

Cambia las unidades en que se miden los ángulos, las cuales pueden ser bien grados (degrees) o radianes (radians). El valor por defecto es radianes.

boundary [left] [up] [right] [down]

Los límites determinan el área en la cual el robot, las galletas y las minas serán situados. También definen el área visible en la ventana de la arena. Este comando ha de aparecer obligatoriamente, y solo puede estar precedido por scale.

inner_circle [bounce] [hardness] [center_x] [center_y] [radius]

Los robots están limitados a circular por el área interior de este círculo.

circle [bounce] [hardness] [center_x] [center_y] [radius]

Pared de forma circular.

line [bounce] [hardness] [thickness] [start_x] [start_y] [end_x] [end_y]

Crea una línea. Esta solo evita que el robot la atraviese a través de su parte más larga, así que recuerda situar círculos en los extremos.

arc [bnc] [hardn] [thickn] [center_x] [ctr_y] [inner_radius] [outer_rds] [angle1] [angle2]

Un arco es el sector de una circunferencia entre dos ángulos. Al igual que la línea, necesita círculos en ambos extremos.

polygon [bounce] [hardn] [thickn] [number of vertices] ([center_x] [center_y])...

Crea un cierto número de círculos conectados entre sí por líneas.

closed_polygon [bounce] [hardn] [thickn] [number of vertices] ([center_x] [center_y])...

Similar a polygon, pero el primer y el último vértice están también conectados por una línea.

poly_curve [bnc] [hardn] [thickn] [start_x] [start_y] [dir_x] [dir_y] ([command args ...]) ...

El comando poly_curve es el más potente de ente los disponibles para la creación de arenas. Se utiliza para crear paredes con líneas y arcos. En cada paso se tiene la posición y la dirección actuales, las cuales son alteradas con los subcomandos. El último subcomando debe ser C o Q.

L [length]

Dibuja una linea con la longitud dada en la dirección actual.

T [angle]

Gira la dirección actual.

A [angle] [radius]

Dibuja un arco.

C

Termina conectando con el punto inicial.

Q

Salir.

exclusion_point [position_x] [position_y]

Cuando la arena ente los límites consiste en varias áreas separadas, deben excluirse todas menos una insertando puntos de exclusión. Todos los puntos desde los que se pueda dibujar una linea recta hasta un punto de exclusión, sin atravesar una pared, se considera que quedan fuera de la arena.


Next Previous Contents