class DuelGen(models.Model): critt1 = None critt2 = None result = None """ @param critt1: (model.Critt) object @param critt2: (models.Critt) object """ def __init__(self, critt1, critt2): print "--- Init duel critts" self.critt1 = DuelCrittGen(critt1) self.critt2 = DuelCrittGen(critt2) def fight(self): # Winner if left undefended if self.critt1.model_critt == None: self.result = "attwon_undef" return self._make_CrittDuel() elif self.critt2.model_critt == None: self.result = "defwon_undef" return self._make_CrittDuel() print "--- Fight between %s and %s ---" % (self.critt1.name(), self.critt2.name()) duel_round = 0 # Run the fight while not self.duel_over(): duel_round += 1 print "------ Round %s" % duel_round self.critt2.take_damage(self.critt1.get_damage()) self.critt1.take_damage(self.critt2.get_damage()) # Find winner or draw if (self.critt1.is_dead() and self.critt2.is_dead()): self.result = "draw" elif self.critt1.is_dead(): self.result = "attwon" elif self.critt2.is_dead(): self.result = "defwon" return self._make_CrittDuel() def duel_over(self): if self.critt1.is_dead(): return True elif self.critt2.is_dead(): return True else: return False def _make_CrittDuel(self): if not self.critt1.model_critt == None: attacker = CrittSnapshop() attacker.make(self.critt1.model_critt) else: attacker = None if not self.critt2.model_critt == None: defender = CrittSnapshop() defender.make(self.critt2.model_critt) else: defender = None return CrittDuel(attacker=attacker, defender=defender, result=self.result)