Implement an entire battle.