コード例 #1
0
    def test_update_entities(self):
        game_state = GameState()
        was_called = []

        def update(*_):
            was_called.append(0)

        entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER)
        entity.update = update

        entity_manager = EntityManager()
        entity_manager.entities = [entity]
        entity_manager.update_entities(game_state)

        self.assertEqual(1, len(was_called))

        before_health = game_state.player_health
        game_state.tile_map.tiles[(0, 0)].tile_type = TileType.FINISH
        entity_manager.entities = [entity]
        entity_manager.update_entities(game_state)
        self.assertEqual(0, len(entity_manager.entities))
        self.assertEqual(before_health - 1, game_state.player_health)

        game_state = GameState()
        entity.health = 0
        entity.entity_type = EntityType.SMALL_BOULDER
        entity_manager.entities = [entity]
        entity_manager.update_entities(game_state)
        self.assertEqual(0, len(entity_manager.entities))
コード例 #2
0
 def test_update(self):
     game_state = GameState()
     game_state.tile_map.tiles[(0, 0)].tile_type = TileType.PATH
     game_state.tile_map.tiles[(0, 0)].directions = [(1, 0)]
     game_state.entity_manager.update(game_state)
     entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER)
     entity.update(game_state)
     self.assertEqual((1, 0), entity.next_tile_index)
コード例 #3
0
 def test_update_split_large_boulder(self):
     game_state = GameState()
     entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER)
     entity.health = 0
     entity_manager = EntityManager()
     entity_manager.entities = [entity]
     entity_manager.update_entities(game_state)
     self.assertEqual(2, len(entity_manager.entities))
コード例 #4
0
    def test_calculate_movement(self):
        game_state = GameState()

        entity = Entity(Vector(50, 50), Vector(10, 10),
                        EntityType.LARGE_BOULDER)
        entity.next_tile_index = (1, 0)
        entity.calculate_movement(game_state)
        self.assertEqual(Vector(2, 0), entity.velocity, str(entity.velocity))
        self.assertEqual(Vector(52, 50), entity.position, str(entity.position))
コード例 #5
0
    def test_update(self):
        was_called = []

        def shoot(*_):
            was_called.append(0)

        game_state = GameState()
        game_state.window_size = Vector(100, 100)
        game_state.building_manager.shoot = shoot

        # no enemy to shoot at
        building = Laser(Vector(), Vector(10, 10))
        building.cool_down = 0
        building.update(game_state)
        self.assertEqual(0, len(was_called))

        # on cool down
        building = Laser(Vector(), Vector(10, 10))
        building.cool_down = 100
        building.update(game_state)
        self.assertEqual(0, len(was_called))

        # shooting
        game_state.entity_manager.entities = [
            Entity(Vector(150, 0), Vector(10, 10), EntityType.LARGE_BOULDER)
        ]
        building = Laser(Vector(), Vector(10, 10))
        building.cool_down = 0
        building.update(game_state)
        self.assertEqual(1, len(was_called))
コード例 #6
0
    def test_render(self):
        game_state = GameState()
        was_called = []

        def render(*_):
            was_called.append(0)

        position = Vector()
        size = Vector()
        entity = Entity(position, size, EntityType.LARGE_BOULDER)
        entity.render = render

        entity_manager = EntityManager()
        entity_manager.entities = [entity]
        entity_manager.render(game_state)
        self.assertEqual(1, len(was_called))
コード例 #7
0
    def test_update_cancel():
        game_state = GameState()

        entity = Entity(Vector(-100, -100), Vector(10, 10),
                        EntityType.LARGE_BOULDER)
        entity.update(game_state)

        entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER)
        entity.update(game_state)
コード例 #8
0
    def test_update_with_entity_hit(self):
        game_state = GameState()
        entity = Entity(Vector(0, 0), Vector(10, 10), EntityType.LARGE_BOULDER)
        game_state.entity_manager.entities = [entity]

        bullet = Bullet(Vector(), Vector(10, 10), Vector(1, 1))
        result = bullet.update(game_state)
        self.assertTrue(result)
コード例 #9
0
    def test_render(self):
        game_state = GameState()
        game_state.init("./tower_defense/res")
        game_state.window_size = Vector(100, 100)

        entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER)
        batch = pyglet.graphics.Batch()
        entity.render(game_state, batch)
        self.assertEqual(1, len(batch.top_groups))
        self.assertEqual(pyglet.graphics.TextureGroup,
                         type(batch.top_groups[0]))

        entity = Entity(Vector(10, 10), Vector(10, 10),
                        EntityType.LARGE_BOULDER)
        batch = pyglet.graphics.Batch()
        entity.render(game_state, batch)
        self.assertEqual(0, len(batch.top_groups))
コード例 #10
0
    def test_check_for_entities(self):
        game_state = GameState()
        game_state.window_size = Vector(100, 100)

        building = Drill(Vector(), Vector(10, 10))
        result = building.check_for_entities(game_state)
        self.assertEqual(False, result)

        game_state = GameState()
        game_state.window_size = Vector(100, 100)
        game_state.entity_manager.entities = [
            Entity(Vector(), Vector(10, 10), EntityType.LARGE_BOULDER)
        ]

        building = Drill(Vector(), Vector(10, 10))
        result = building.check_for_entities(game_state)
        self.assertEqual(True, result)
        self.assertEqual(5, building.animation_speed)
        self.assertEqual(99, game_state.entity_manager.entities[0].health)
コード例 #11
0
 def test_take_damage(self):
     entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER)
     entity.take_damage(10)
     self.assertEqual(90, entity.health)