def do_you_wanna_start_a_fight():
    if d.hero_attack(by="spell") is True:
        des = input(
            "There is an enemy in the range of your spell. You can start a fight. (y/n) ")
        if des == "y":
            ran = h.spell.get_cast_range()
            enemy = Enemy.generate_enemy()
            enemy_coords = check_for_stuff(
                d.dungeon_map, d.x, d.y, "E", ran)
            f = Fight(h, enemy, enemy_coords, d.dungeon_map)
            f.start_fight()
        elif des == "n":
            dir = get_right_direction()
            d.move_hero(dir)
    elif d.hero_attack(by="weapon") is True:
        des = input(
            "There is an enemy near you. You can start a fight. (y/n) ")
        if des == "y":
            enemy = Enemy.generate_enemy()
            enemy_coords = check_for_stuff(d.dungeon_map, d.x, d.y, "E", 1)
            f = Fight(h, enemy, enemy_coords, d.dungeon_map)
            f.start_fight()
        elif des == "n":
            dir = get_right_direction()
            d.move_hero(dir)
示例#2
0
 def setUp(self):
     self.hero = Hero('Stoyan', 200, 'DeathBringer')
     self.hero.equip_weapon(Weapon('Sword', 20, 0.5))
     self.orc = Orc('Beginner Orc', 100, 1.5)
     self.orc.equip_weapon(Weapon('Stick', 10, 0.1))
     self.legendary_orc = Orc('Broksiguar', 200, 2)
     self.legendary_orc.equip_weapon(Weapon('Frostmourne', 80, 0.9))
     self.fight_hero_vs_orc = Fight(self.hero, self.orc)
     self.fight_hero_vs_legendary_orc = Fight(self.hero, self.legendary_orc)
    def test_validate_fight(self):
        h = Hero(name="Bron",
                 title="Dragonslayer",
                 health=100,
                 mana=100,
                 mana_regeneration_rate=2)

        with self.assertRaises(AssertionError):
            Fight(h, 1)
        with self.assertRaises(AssertionError):
            Fight(0, Enemy())
示例#4
0
    def arena_fight(self):

        self.arena_fights += 1

        if 5 <= self.arena_fights < 10:
            return Fight(self.player, Enemy(20, 2, 5, 3)).fight()

        elif self.arena_fights >= 10:
            return Fight(self.player, Enemy(25, 4, 8, 7)).fight()

        return Fight(self.player, Enemy(15, 1, 3, 1)).fight()
示例#5
0
    def move(self, player_name, direction):
        pyrva = self.players[player_name].i_coord
        vtora = self.players[player_name].j_coord
        self.direction = direction
        i = 0
        j = 0

        if direction == "right":
            i = 0
            j = 1
        elif direction == "left":
            i = 0
            j = -1
        elif direction == "down":
            i = 1
            j = 0
        elif direction == "up":
            i = -1
            j = 0

        if type(self.players[player_name]) == Hero and self.map_array[
                pyrva + i][vtora + j] == 'O':
            fight = Fight(self.players[player_name],
                          self.that_enemy(pyrva + i, vtora + j))
            fight.simulate_fight()

        elif type(self.players[player_name]) == Orc and self.map_array[
                pyrva + i][vtora + j] == 'H':
            fight = Fight(self.players[player_name],
                          self.that_enemy(pyrva + i, vtora + j))
            fight.simulate_fight()

        if self.map_array[pyrva + i][vtora + j] == '.':
            if type(self.players[player_name]) == Hero:
                self.map_array[pyrva + i][vtora + j] = 'H'
                self.map_array[pyrva][vtora] = '.'
                if direction == "left" or direction == "right":
                    self.players[player_name].j_coord += j
                else:
                    self.players[player_name].i_coord += i
            elif type(self.players[player_name]) == Orc:
                self.map_array[pyrva + i][vtora + j] = 'O'
                self.map_array[pyrva][vtora] = '.'
                if direction == "left" or direction == "right":
                    self.players[player_name].j_coord += j
                else:
                    self.players[player_name].i_coord += i
            else:
                return False
示例#6
0
 def test_simulate_fight_hero_win(self):
     orc_l = Orc("Loser", 300, 2)
     hero_w = Hero("Winner", 300, "TheWinner")
     wep = Weapon("Ubiec", 15, 0.5)
     hero_w.equip_weapon(wep)
     hero_fight = Fight(hero_w, orc_l)
     self.assertEqual(hero_fight.simulate_fight(), hero_fight._HERO_WINNER)
示例#7
0
    def change_map_after_move(self, player_name, old_position, new_position):
        if 0 <= new_position[0] < self.lines and 0 <= new_position[1] < self.line_leng:
            self.players[player_name][1] = new_position
            char_on_new_position = self.get_on_position(new_position)
            if char_on_new_position in {"."}:
                self.set_position(new_position, self.get_on_position(old_position))

            elif char_on_new_position in {"O", "H"}:
                entity_0 = self.players[player_name][0]
                entity_1 = None
                print (self.players)
                for p in self.players.values():
                    a = p[1]

                    if a == new_position:
                        entity_1 = p[0]
                fight = Fight(entity_0, entity_1)
                fight.simulate_fight()

                if entity_0.is_alive():
                    self.set_position(new_position, self.get_on_position(old_position))
                
            elif char_on_new_position in {"W"}:
                self.players[player_name][0].equip_weapon(self.weapons[(new_position[0],new_position[1])])
                del self.weapons[(new_position[0],new_position[1])]
                self.set_position(new_position, self.get_on_position(old_position))
            
            self.set_position(old_position, ".")
            self.players[player_name][1] = new_position
            return True
        
        else:
            return False
示例#8
0
 def setUp(self):
     self.hero = Hero("Bron", 100, "DragonSlayer")
     self.orc = Ork("BronOrk", 100, 1.1)
     self.axe = Weapon("Axe", 12.45, 0.2)
     self.sword = Weapon("Sword of Arthur", 13, 0.5)
     self.battle = Fight(self.hero, self.orc)
     self.dungeon = Dungeon("dungeon.txt")
 def move(self, player_name, direction):
     player = self.players[player_name]
     old_player_pos = list(player[1])
     is_move_correct, new_player_pos = self._check_move_possible(
         old_player_pos, direction)
     self.players[player_name][1] = new_player_pos
     if is_move_correct:
         old_row = old_player_pos[1]
         old_col = old_player_pos[0]
         self.map_grid[old_row][old_col] = '.'
         del self.occupied_cells[tuple(old_player_pos)]
         new_row = new_player_pos[1]
         new_col = new_player_pos[0]
         if self.map_grid[new_row][new_col] != '.':
             attacker = player[0]
             defender = self.occupied_cells[tuple(new_player_pos)]
             fight = Fight(attacker, defender)
             fight.simulate_fight()
             if not fight.attacker.is_alive():
                 self._update_map()
                 return True
         self.occupied_cells[tuple(new_player_pos)] = player[0]
         self.map_grid[new_row][new_col] = Dungeon._get_entity_symbol(
             player[0])
         self._update_map()
     return is_move_correct
示例#10
0
    def move_hero(self, direction, in_fight=False):
        new_pos_x = self._hero_pos[0] + self.directions[direction][0]
        new_pos_y = self._hero_pos[1] + self.directions[direction][1]

        if isinstance(self._map[new_pos_x][new_pos_y], Enemy) and in_fight:
            self._hero_pos = new_pos_x, new_pos_y
        elif self.is_pos_on_the_map(new_pos_x, new_pos_y) is False or\
            (type(self._map[new_pos_x][new_pos_y]) is str and
             self._map[new_pos_x][new_pos_y] == '#'):
            return False
        elif (type(self._map[new_pos_x][new_pos_y]) is str
              and self._map[new_pos_x][new_pos_y] == '.'):
            self._move_hero_to_pos(new_pos_x, new_pos_y)
        elif (type(self._map[new_pos_x][new_pos_y]) is str
              and self._map[new_pos_x][new_pos_y] == 'G'):
            raise YouWin('Congratulations! You win the game!!!')
        elif isinstance(self._map[new_pos_x][new_pos_y], Enemy):
            self._map[self._hero_pos[0]][self._hero_pos[1]] = '.'
            self._hero_pos = new_pos_x, new_pos_y
            Fight(dungeon=self, enemy_pos=(new_pos_x, new_pos_y)).fight()
            self._map[self._hero_pos[0]][self._hero_pos[1]] = 'H'
        else:  # treasure
            self.hero_open_treasure((new_pos_x, new_pos_y))
            self._move_hero_to_pos(new_pos_x, new_pos_y)
        self._hero.regenerate_mana()
        return True
    def hero_attack(self, by, direction):
        if by == PLAYER_ATTACK_BY_SPELL_STRING:
            try:
                enemy_x, enemy_y = self.enemy_in_casting_range(direction)
            except TypeError:
                return "Nothing in casting range {x}".format(x=self.hero.spell.cast_range)
            else:
                fight = Fight(self.hero, Enemy(),
                              distance=self.distance, direction=direction)
                current_x, current_y = self.get_current_position()
                if self.hero.is_alive():
                    self.update_hero_position(current_x, current_y,
                                              enemy_x, enemy_y)
                elif self.checkpoint:
                    self.update_hero_position(current_x,
                                              current_y,
                                              self.checkpoint[1],
                                              self.checkpoint[0])
                    self.checkpoint = 0
                    self.hero.health = 100

                return fight
        elif by == PLAYER_ATTACK_BY_WEAPON_STRING:
            return "Weapon range is 0!"
        else:
            return "Cannot attack by {x}".format(x=by)
示例#12
0
 def test_simulate_fight_orc_win(self):
     orc_w = Orc("Winner", 300, 2)
     hero_l = Hero("Loser", 300, "TheLoser")
     wep = Weapon("Ubiec", 15, 0.5)
     orc_w.equip_weapon(wep)
     orc_fight = Fight(hero_l, orc_w)
     self.assertEqual(orc_fight.simulate_fight(), orc_fight._ORC_WINNER)
示例#13
0
 def setUp(self):
     self.orc = Orc("PeshoOrc", 100, 1.2)
     self.hero = Hero("PeshoHero", 100, "peshooo")
     self.weapon1 = Weapon("axe", 50, 0.5)
     self.weapon2 = Weapon("axe2", 70, 0.3)
     self.fighting = Fight(self.hero, self.orc)
     self.orc.weapon = self.weapon1
示例#14
0
 def run(self):
     fight = Fight(self._team1.dna, self._team2.dna, self._pokemons, self._moves, self._types)
     (victory1, victory2) = fight.fight()
     if victory1:
         self._team1.win()
     if victory2:
         self._team2.win()
    def move_hero(self, direction):
        current_x, current_y = self.get_current_position()
        new_x, new_y = current_x, current_y

        if direction == 'right':
            new_x = current_x + 1
        elif direction == 'left':
            new_x = current_x - 1
            if new_x < 0:
                return False
        elif direction == 'up':
            new_y = current_y - 1
            if new_y < 0:
                return False
        elif direction == 'down':
            new_y = current_y + 1
        else:
            return False

        try:
            if self.list_map[new_y][new_x] == '#':
                return False

            elif self.list_map[new_y][new_x] == '.':
                self.update_hero_position(current_x, current_y, new_x, new_y)
                self.hero.take_mana(self.hero.mana_regeneration_rate)

                return True

            elif self.list_map[new_y][new_x] == 'T':
                treasure = self.pick_treasure()
                self.update_hero_position(current_x, current_y, new_x, new_y)

                return treasure

            elif self.list_map[new_y][new_x] == 'E':
                fight = Fight(self.hero, Enemy())
                if self.hero.is_alive():
                    self.update_hero_position(current_x, current_y,
                                              new_x, new_y)
                elif self.checkpoint:
                    self.update_hero_position(current_x,
                                              current_y,
                                              self.checkpoint[1],
                                              self.checkpoint[0])
                    self.checkpoint = 0
                    self.hero.health = 100

                return fight

            elif self.list_map[new_y][new_x] == 'C':
                self.checkpoint = (new_y, new_x)
                self.update_hero_position(current_x, current_y, new_x, new_y)

                return True

            else:
                return self.list_map[new_y][new_x]
        except IndexError:
            return False
示例#16
0
 def test_start_fight(self):
     h = self.hero
     e = self.enemy
     h.learn_spell(Spell())
     h.equip_weapon(Weapon())
     ft = Fight(h, e)
     ft.start_fight()
示例#17
0
 def test_fight(self):
     self.bron_orc.equip_weapon(self.hammer)
     self.bron_hero.equip_weapon(self.sniper)
     self.fight1 = Fight(self.bron_hero, self.bron_orc)
     print
     self.assertEqual(1, self.fight1.simulate_fight())
     print("__________________________________________________________")
示例#18
0
 def test_simulate_fight(self):
     proba1 = Weapon("axe", 1, 0.1)
     proba2 = Weapon("sword", 40, 0.9)
     self.my_hero.equip_weapon(proba1)
     self.my_orc.equip_weapon(proba2)
     the_fight = Fight(self.my_hero, self.my_orc)
     self.assertFalse(the_fight.simulate_fight())
示例#19
0
 def fight(self, dest):
     #print "Fight! .. You win!!!"
     #return True
     self.pause()
     self.next = Fight(self)
     self.next_was = 1
     self.quit()
示例#20
0
 def setUp(self):
     self.orc = Orc("Berserk", 1000, 2)
     self.hero = Hero("Bron", 1000, "DragonSlayer")
     self.weapon = Weapon("Mighty Axe", 25, 0.3)
     self.orc.equip_weapon(self.weapon)
     self.hero.equip_weapon(self.weapon)
     self.fight = Fight(self.hero, self.orc)
示例#21
0
def Monastery():
    window.clear()
    window.print_double_line()
    window.smooth_print("\n".join(dialogs["monastery"]["intro"]))
    window.print_double_line()
    window.user_input(dialogs["pause"])

    window.print_double_line()
    window.smooth_print("\n".join(dialogs["monastery"]["first_battle"]))
    window.print_double_line()

    for i in range(5):
        window.smooth_print(
            f"\n Paintings remaining before next event: \033[1;33;40m{player.next_event - player.room}\033[1;37;40m\n")
        window.user_input(dialogs["pause"])

        enemy = choose_opponent()
        fight = Fight(window, player, enemy)
        fight.fight()
        player.room += 1

        if i != 4:
            window.print_double_line()
            window.smooth_print("\n".join(dialogs["monastery"]["interlude1"]))
            window.print_double_line()

    EncounterAcolyte()
    player.room += 1
    player.next_event = 11

    for i in range(5):
        window.smooth_print(
            f"\n Paintings remaining before meeting the Master: \033[1;33;40m{player.next_event - player.room}\033[1;37;40m\n")
        window.user_input(dialogs["pause"])

        enemy = choose_opponent()
        fight = Fight(window, player, enemy)
        fight.fight()
        player.room += 1

        if i != 4:
            window.print_double_line()
            window.smooth_print("\n".join(dialogs["monastery"]["interlude2"]))
            window.print_double_line()

    Bossfight()
    ending()
示例#22
0
 def setUp(self):
     self.weapon = Weapon(name="The Axe of Destiny", damage=20)
     self.spell = Spell(name="Fireball",
                        damage=30,
                        mana_cost=50,
                        cast_range=2)
     self.hero = Hero(name="Bron",
                      title="Dragonslayer",
                      health=100,
                      mana=100,
                      mana_regeneration_rate=2)
     self.enemy_to_die = Enemy(health=100, mana=100, damage=20)
     self.enemy_to_win = Enemy(health=100, mana=100, damage=50)
     self.hero.equip(self.weapon)
     self.hero.learn(self.spell)
     self.first_fight = Fight(self.hero, self.enemy_to_die)
     self.second_fight = Fight(self.hero, self.enemy_to_win)
示例#23
0
 def setUp(self):
     self.hero = Hero("Bron", 100, "DragonSlayer")
     self.orc = Orc("Shapeshifter", 100, 1.5)
     sword = Weapon("Sword", 10, 0.2)
     axe = Weapon("Axe", 10, 0.2)
     self.hero.equip_weapon(sword)
     self.orc.equip_weapon(axe)
     self.battle = Fight(self.hero, self.orc)
示例#24
0
 def setUp(self):
     self.bron_hero = Hero("Bron", 100, "DragonSlayer")
     self.axe = Weapon("Mighty Axe", 25, 0.2)
     self.sword = Weapon("Mighty Sword", 12, 0.7)
     self.bron_orc = Orc("Bron", 100, 1.3)
     self.my_fight = Fight(self.bron_hero, self.bron_orc)
     self.bron_hero.weapon = self.sword
     self.bron_orc.weapon = self.axe
示例#25
0
    def setUp(self):
        self.varyan = Hero("Varyan Wrynn", 100, "King")
        self.garrosh = Orc("Garrosh Hellscream", 100, 7)

        self.weak_weapon = Weapon("Noob Weapon", 10, 0.1)
        self.strong_weapon = Weapon("Woo Weapon", 20, 0.7)

        self.fight = Fight(self.varyan, self.garrosh)
 def setUp(self):
     self.sten = Hero("Bron", 100, "DragonSlayer")
     self.sho = Orc("Vilasteros", 100, 1.34)
     self.bow = Weapon("Mighty Bow", 13, 0.17)
     self.axe = Weapon("Thunder Axe", 19, 0.25)
     self.sho.equip_weapon(self.bow)
     self.sten.equip_weapon(self.axe)
     self.battle = Fight(self.sten, self.sho)
示例#27
0
 def setUp(self):
     self.hero = Hero("Don Quixote", 9.99, "The Common Sense")
     self.orc = Orc("Oplik", 10, 0.3)
     self.fight = Fight(self.hero, self.orc)
     self.spoon = Weapon("Rounded Spoon", 2, 0.7)
     self.knife = Weapon("Rusty Knife", 6, 0.3)
     self.orc.weapon = self.knife
     self.hero.weapon = self.spoon
示例#28
0
 def setUp(self):
     self.orc_goshe = Orc("Georgi", 100, 1.2)
     self.hero_slayer = Hero("DragonSlayer", 100, "Killer")
     self.axe = Weapon("Axe", 10, 0.2)
     self.sword = Weapon("Sword", 12, 0.5)
     self.orc_goshe.weapon = self.axe
     self.hero_slayer.weapon = self.sword
     self.battle_one = Fight(self.orc_goshe, self.hero_slayer)
示例#29
0
 def test_fight1(self):
     new_hero = Hero("Jack", 100, "Ripper")
     new_orc = Orc("Gruumsh", 40, 1.2)
     hero_weapon = Weapon("The Sting", 8, 0.33)
     orc_weapon = Weapon("The Pacifier", 12, 1)
     new_hero.equip_weapon(hero_weapon)
     new_orc.equip_weapon(orc_weapon)
     Fight(new_hero, new_orc)
示例#30
0
 def test_won_when_hero_is_stronger(self):
      h = Hero(name="Bron", title="Dragonslayer",
              health=100, mana=40, mana_regeneration_rate=2)
      e = Enemy(health=100, mana=100, damage=20)
      w2 = Weapon("knife", 30)
      h.equip(w2)
      f=Fight(h,e)
      expected_result = True
      self.assertEqual(f.won, expected_result)