# BotWars > A programming game at https://botwars.navnit.me: write a Python bot that drives a tank, sweeps its radar, aims a turret and fires, then watch it battle other bots in a real-time arena. It runs entirely in the browser (Python via Pyodide); there is no install, no account and no server-side API. A bot is one Python file with one class that subclasses `botwars.Bot`. The game calls `on_tick(self, me, enemies)` 30 times per second of playback; the bot answers by calling commands such as `self.forward(speed)`, `self.turn_radar(degrees)`, `self.aim_at(enemy)` and `self.fire(power)`. Commands last for one tick. ```python from botwars import Bot class MyBot(Bot): def on_tick(self, me, enemies): self.forward(8) # drive at full speed self.turn_radar(45) # sweep the radar if enemies: self.aim_at(enemies[0]) # point the turret at the first enemy seen self.fire(2) ``` ## Docs - [Bot API reference](https://botwars.navnit.me/llms-full.txt): every command, attribute, event and rule a bot can use ## App - [Workbench](https://botwars.navnit.me/workbench): write a bot, run it against an opponent, replay every tick - [Battleground](https://botwars.navnit.me/battleground): showdowns and round-robin tournaments between bots - [Hall of Fame](https://botwars.navnit.me/hall-of-fame): each bot's record across tournaments (stored in the player's browser) - [Lessons](https://botwars.navnit.me/lessons): learn to write a bot, one idea at a time ## Lessons - [Hello tank](https://botwars.navnit.me/lessons/hello-tank): Drive your tank to the marker. - [Look around](https://botwars.navnit.me/lessons/look-around): Find the enemy with your radar. - [First blood](https://botwars.navnit.me/lessons/first-blood): Aim your turret and destroy Sitting Duck. - [Drive-by](https://botwars.navnit.me/lessons/drive-by): Keep driving and shoot sideways. - [Heat & energy](https://botwars.navnit.me/lessons/heat-and-energy): Destroy Spinner three times without wasting shots or energy.