def test_get_closest_actor_returns_closest_actor(): actor = actors.Egg(None, 0, 0) closest = actors.Cocoon(None, 1, 0) all_objects = [ closest, actors.Goblin(None, 2, 2), actors.Goblin(None, 1, 1) ] result = utils.get_closest_actor(actor, all_objects) assert result is closest
def test_get_distance_returns_actual_distance(expected, target_position): actor = actors.Egg(None, 0, 0) tx, ty = target_position target = actors.Goblin(None, tx, ty) result = utils.get_distance(actor, target) assert result == expected
def test_get_directional_delta_returns_appropriate_result(): level = Level(10, 10) actor = actors.Spider(None, 5, 3) actor.level = level target = actors.Goblin(None, 1, 4) result = utils.get_directional_delta(actor, target) assert result == (-1, 1)
def test_clear_line_of_sight_returns_true_when_clear(target_position): tx, ty = target_position level = Level(10, 10) actor = actors.Spider(None, 5, 5) actor.level = level target = actors.Goblin(None, tx, ty) result = utils.has_clear_line_of_sight(actor, target) assert result is True
def test_clear_line_of_sight_returns_false_when_obstructed(): level = Level(10, 10) level.tiles[1][2] = tiles.CaveWall level.tiles[2][2] = tiles.CaveWall level.tiles[3][2] = tiles.CaveWall actor = actors.Spider(None, 5, 2) actor.level = level target = actors.Goblin(None, 1, 2) result = utils.has_clear_line_of_sight(actor, target) assert result is False
def spawn_goblins(self, turn): level = self.level spawn_points = level.spawns amount = random.randint(1, min(int(turn / 10), 12)) for _ in range(amount): x, y = random.choice(spawn_points) level.add_actor(actors.Goblin(self, x, y)) if turn == 500 and self.boss.level is None: x, y = random.choice(spawn_points) self.boss.x = x self.boss.y = y level.add_actor(self.boss)