예제 #1
0
파일: battle.py 프로젝트: sqishy/remnant
    def turn(self):
        for i, m in enumerate(self.player1.remnants + self.player2.remnants):
            send_message('%d: %s %d' % (i + 1, m.name, m.hp))

        commands = list()

        # if psi psi select
        if self.psi_player:
            self.psi_player.enemy_player.get_commands(commands)
            send_message('PSI: Enemy commands')
            for c in commands:
                send_message(c)
            self.psi_player.get_commands(commands)
        else:
            self.player1.get_commands(commands)
            self.player2.get_commands(commands)

        for event in self.begin_turn_events:
            event()
        self.check_battle_state()
        commands.sort()

        for command in commands:
            if command.caster.hp <= 0:
                continue
            if command.target.hp <= 0:
                command.target = command.target.owner[0]
            try:
                command.execute_command()
            except DeathEvent as de:
                send_message(str(de))
                de.remnant.owner.remove(de.remnant)
            self.check_battle_state()
        for event in self.end_turn_events:
            event()
        self.check_battle_state()
예제 #2
0
    def turn(self):
        for i, m in enumerate(self.player1.remnants + self.player2.remnants):
            send_message('%d: %s %d' % (i + 1, m.name, m.hp))

        commands = list()

        # if psi psi select
        if self.psi_player:
            self.psi_player.enemy_player.get_commands(commands)
            send_message('PSI: Enemy commands')
            for c in commands:
                send_message(c)
            self.psi_player.get_commands(commands)
        else:
            self.player1.get_commands(commands)
            self.player2.get_commands(commands)

        for event in self.begin_turn_events:
            event()
        self.check_battle_state()
        commands.sort()

        for command in commands:
            if command.caster.hp <= 0:
                continue
            if command.target.hp <= 0:
                command.target = command.target.owner[0]
            try:
                command.execute_command()
            except DeathEvent as de:
                send_message(str(de))
                de.remnant.owner.remove(de.remnant)
            self.check_battle_state()
        for event in self.end_turn_events:
            event()
        self.check_battle_state()
예제 #3
0
파일: battle.py 프로젝트: sqishy/remnant
        self.check_battle_state()

    def battle_loop(self):
        while True:
            self.turn()
            self.check_battle_state()

    def check_battle_state(self):
        if all(map(lambda x: x.hp <= 0, self.player1)):
            raise LossEvent("%s lost" % self.player1.name)
        if all(map(lambda x: x.hp <= 0, self.player2)):
            raise LossEvent("%s lost" % self.player2.name)


if __name__ == '__main__':
    communicationFacade.communicator = CliInterface()
    d1 = Dragon('dragon1')
    d2 = Dragon('dragon2')
    g1 = Ghost('ghost1')
    m1 = Mech('mech1')
    m2 = Mech('mech2')
    m3 = Mech('mech3')
    t1 = CliPlayer(d1, d2, g1, name="player Dragon")
    t2 = AiPlayer(m1, m2, m3, name='player Mech')
    b = Battle(t1, t2)

    try:
        b.battle_loop()
    except LossEvent as e:
        send_message(str(e))
예제 #4
0
    def battle_loop(self):
        while True:
            self.turn()
            self.check_battle_state()

    def check_battle_state(self):
        if all(map(lambda x: x.hp <= 0, self.player1)):
            raise LossEvent("%s lost" % self.player1.name)
        if all(map(lambda x: x.hp <= 0, self.player2)):
            raise LossEvent("%s lost" % self.player2.name)


if __name__ == '__main__':
    communicationFacade.communicator = CliInterface()
    d1 = Dragon('dragon1')
    d2 = Dragon('dragon2')
    g1 = Ghost('ghost1')
    m1 = Mech('mech1')
    m2 = Mech('mech2')
    m3 = Mech('mech3')
    t1 = CliPlayer(d1, d2, g1, name="player Dragon")
    t2 = AiPlayer(m1, m2, m3, name='player Mech')
    b = Battle(t1, t2)

    try:
        b.battle_loop()
    except LossEvent as e:
        send_message(str(e))