def test_when_hero_attacks_and_enemy_has_no_armor(self):
        dungeon = Dungeon('level1.txt')
        hero = Hero(name="Bron",
                    title="Dragonslayer",
                    health=100,
                    mana=100,
                    mana_regeneration_rate=2)
        hero.equip(Weapon('Axe', 20))

        enemy = Enemy(50, 50, 20)

        expected_damage_taken = 20

        result_damage_taken = dungeon.attack(hero, enemy)[0]

        self.assertEqual(result_damage_taken, expected_damage_taken)
    def test_when_hero_has_same_attack_points_as_enemy_armor_points(self):
        dungeon = Dungeon('level1.txt')
        hero = Hero(name="Bron",
                    title="Dragonslayer",
                    health=100,
                    mana=100,
                    mana_regeneration_rate=2)
        dungeon.spawn(hero)
        hero.equip(Weapon('Axe', 20))
        hero.equip(Armor('Shield', 20))

        enemy = Enemy(50, 50, 20)
        enemy.equip(Armor('Vest', 20))

        result = dungeon._fight(enemy)

        self.assertTrue('Hero got tired and let his guard down.' in result)
예제 #3
0
def start_game():
    result = False
    print(fg.orange, fg.bold, "\n          Welcome to Dungeons and Pythons          ", '\033[0m')
    print(fg.orange, "       If you want to play, create your hero now:                  \n", fg.end_color)
    n = input("Give him/her a name:")
    t = input("And a title:")
    hero = Hero(str(n), str(t), 100, 100, 2)
    print(f"\n ~~~~~~~~~~Your hero is known as {fg.lightred} {fg.bold} {str(hero.known_as())} {fg.end_color} ~~~~~~~~~~~~~~~")
    print(f" ~~~~~~~~~~You have: {fg.blue} {fg.bold} health - {hero.get_health()}, mana - {hero.get_mana()} {fg.end_color} ~~~~~~~~~~~~~~~\n")
    s = spell_four
    hero.learn(s)
    w = weapon_three
    hero.equip(w)
    map = Dungeon("level1.txt")
    map.spawn(hero)
    print(f"{fg.yellow}{fg.bold}This is your map for the game:\n {fg.end_color}")

    map.print_map()
    print(f"\n'H' - your hero")
    print(f"'E' - enemy")
    print(f"'.' - you can move there")
    print(f"'#' - you can't go there \n\n ")

    while result is not True:
        print(fg.bold, fg.yellow, "Current map: ", fg.end_color)
        map.print_map()
        print(f"{fg.yellow}Choose one of the following: {fg.end_color}")
        print(f"{fg.yellow}Move your hero: 'm'\n {fg.end_color}")
        print(f"{fg.yellow}Stats of your hero: 's'\n {fg.end_color}")
        print(f"{fg.yellow}Attack with your hero: 'a'\n {fg.end_color}")
        choice = input()
        if choice == 'm':
            t = direction_checker()
            result = map.move_hero(str(t))
        elif choice == 's' or choice == 'a':
            result = choice_checker(map, choice)
        else:
            print('Invalid choice!')
예제 #4
0
def demo():
    h = Hero(name="Bron", title="Dragonslayer", health=100, mana=100, mana_regeneration_rate=2)

    w = Weapon(name="The Axe of Destiny", damage=20)
    h.equip(w)

    s = Spell(name="Fireball", damage=30, mana_cost=50, cast_range=2)
    h.equip(s)

    map = Dungeon("level1.txt")
    map.spawn(h)

    map.move_hero("right")

    map.move_hero("down")

    map.hero_attack(by="magic")

    map.move_hero("down")
    map.move_hero("down")

    map.move_hero("right")

    map.move_hero("right")
    map.move_hero("right")
    map.move_hero("right")
    map.move_hero("up")
    map.move_hero("up")
    map.move_hero("up")
    map.move_hero("right")
    map.move_hero("right")
    map.move_hero("right")
    map.move_hero("right")
    map.move_hero("down")
    map.move_hero("down")
    map.move_hero("down")
    map.move_hero("down")