def change_of_plans(self): self.pick_battery() self.pick_target() if self.game.proponent.vitalities[self.battery_slot] < 60000: self.pick_battery() self.sequence = BoostBattery(self.battery_slot) elif self.game.opponent.vitalities[self.target_slot] > 0: self.pick_target() self.sequence = AttackSlot(self.battery_slot, self.target_slot) else: #print>>sys.stderr, 'blargh', self.battery_slot, self.target_slot self.sequence = SequenceBot([], 0) self.sequence.set_game(self.game)
class SlotKiller(Bot): def __init__(self): self.sequence = None def set_game(self, game): super(SlotKiller, self).set_game(game) self.pick_battery() self.pick_target() self.change_of_plans() def choose_move(self): move = self.get_next_move() if move == None: self.change_of_plans() move = self.get_next_move() if move == None: move = (LEFT_APP, 0, cards.I) return move def get_next_move(self): return self.sequence.choose_move() def pick_battery(self): self.battery_slot = reduce(lambda x, y: x if x[1] >= y[1] else y, zip(range(SLOTS), self.game.proponent.vitalities), (0, 0))[0] def pick_target(self): self.target_slot = reduce(lambda x, y: y if y[1] <= x[1] and y[1] != 0 else x, zip(range(SLOTS), self.game.opponent.vitalities), (0, 100500))[0] def change_of_plans(self): self.pick_battery() self.pick_target() if self.game.proponent.vitalities[self.battery_slot] < 60000: self.pick_battery() self.sequence = BoostBattery(self.battery_slot) elif self.game.opponent.vitalities[self.target_slot] > 0: self.pick_target() self.sequence = AttackSlot(self.battery_slot, self.target_slot) else: #print>>sys.stderr, 'blargh', self.battery_slot, self.target_slot self.sequence = SequenceBot([], 0) self.sequence.set_game(self.game)