Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
    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)