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)
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())
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()
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
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)
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
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
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)
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)
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
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
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()
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("__________________________________________________________")
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())
def fight(self, dest): #print "Fight! .. You win!!!" #return True self.pause() self.next = Fight(self) self.next_was = 1 self.quit()
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)
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()
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)
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)
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
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)
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
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)
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)
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)