sábado, 27 de noviembre de 2010

Un bot para probarlos a todos (trampeando en RTB)

Andaba yo con la idea de hacer un tuto sobre Real Time Battle, un juego de programación muy original en el que uno ha de programar un tanque que se maneja usando la entrada y salida estándar, permitiendo usar casi cualquier lenguaje.
Escarmentado por lo que pasó con la Introducción a la criptografía, que lleva 5 meses esperando el penúltimo post (que vaya si se dice rapido) y el de NetKit (en cuanto pueda lo acabo, en serio), quería tener todo preparado antes de empezar, mientras tanto presento un bot que a mí me sirve para hacer las pruebas y puede que a alguien le resulte útil.

El bot tiene dos partes, la que funciona con RTB (el "servidor"), no hace gran cosa, simplemente lee el archivo "/tmp/controller" y hace que el tanque lo haga, la segunda parte es con la que se comunica el usuario (el "cliente"), que le permite controlar al robot... sí, trampa gordísima, va en contra del objetivo propio del juego, pero sirve para probar el comportamiento de otros robots sin tener que escribir uno que los active.


El código la versión sin sockets solo funciona en sistemas *nix, ya que utiliza fifos para la comunicación entre las dos partes (espero añadir en breve una version modificada que use sockets, con cambios mínimos en el código) ya programada.


Por cierto, el servidor utiliza el API que se puede encontrar aquí [ http://rtb.belay.es/?page_id=16 ],aunque esta incluido en el zip (está bajo la GPL)


[servidor.zip] [cliente.py]

Añade el servidor.robot y el Robot_api.py a la carpeta de robots, y ejecutar el cliente antes (es el que crea el fifo).
Para manejar el cliente solo hay que mantener el foco en el terminal en donde se ejecutó, el robot se controla con WASD (no me preguntes cuál es para que ¬¬)  y espacio ' ' para disparar, para salir del cliente, X.

Esta es la versión con sockets (50505 y solo disponible desde localhost), el API del servidor es el mismo del zip.

[socket_server.robot][socket_client.py]

Al final el socket_cliente.py era el que espera por las conexiones... de lo contrario, activar el cliente para conectarse cuando se crea el bot podría provocar aún más problemas con RTB =P

Perdón por la carencia de comentarios... cosas de las prisas.

Eso es todo, saludos

No hay comentarios:

Publicar un comentario