示例#1
0
def update(frame_time):

    for cubchoo in cubchooes:
        cubchoo.update(frame_time)
        collision.collision_object_and_character(map, cubchoo, frame_time)
        collision.collision_tile_and_character(map, cubchoo, frame_time)        
        if not cubchoo.life:
            cubchooes.remove(cubchoo)
    
    for terrorlight in terrorlights:
        terrorlight.update(frame_time)
        collision.collision_map_and_character(map, terrorlight, frame_time)
        collision.collision_object_and_character(map, terrorlight, frame_time)
        #collision.collision_tile_and_character(map, terrorlight, frame_time) 

    #map.update(frame_time)

    for maple in maples:
        maple.update(frame_time)

    '''
    for snow in snows:
        snow.update(frame_time)
    '''

    for cloud in clouds:
        cloud.update(frame_time)

    effects.update(frame_time)
def update(frame_time):
    global game_play, game_over, game_clear
    if not game_play:
        return
        
    if finn.life:
        finn.update(frame_time)
        collision.collision_tile_and_character(map, finn, frame_time)
        collision.collision_object_and_character(map, finn, frame_time)
    else:
        background_music.stop()
        game_over_music.repeat_play()
        game_play = False
        game_over = True
        
        
    for terrorlight in terrorlights:
        terrorlight.update(frame_time)
        
        if collision.collision_player_and_character(finn, terrorlight):
            effect_x = min(finn.x, terrorlight.x) + abs(finn.x - terrorlight.x) // 2
            effect_y = min(finn.y, terrorlight.y) + abs(finn.y - terrorlight.y) // 2
            effects.add_effect(damage_effect.DamageEffect(effect_x, effect_y))
            finn.play_hit_sound()
            if finn.speed > 30:
                finn.speed -= 10
                
        collision.collision_map_and_character(map, terrorlight, frame_time) 
        collision.collision_object_and_character(map, terrorlight, frame_time)
    

    if len(terrorlights) <= 5:
        global terrorlight_respone_time
        terrorlight_respone_time -= frame_time
        if terrorlight_respone_time < 0:
            object = map.to_trigger('Respone-C')
            terrorlight = terrorlight_character.Terrorlight()
            terrorlight.x, terrorlight.y = object.x, map.mapoffsety + map.mapheight - object.y
            terrorlights.append(terrorlight)
            terrorlight_respone_time = 7.0

    for cubchoo in cubchooes:
        cubchoo.update(frame_time) 
        
        if finn.frame_stop:
            if collision.collision_player_and_character(finn, cubchoo):
                effect_x = min(finn.x, cubchoo.x) + abs(finn.x - cubchoo.x) // 2
                effect_y = min(finn.y, cubchoo.y) + abs(finn.y - cubchoo.y) // 2
                effects.add_effect(damage_effect.DamageEffect(effect_x, effect_y))
                finn.play_hit_sound()
        else:
            if collision.collision_player_and_character(cubchoo, finn):
                effect_x = min(finn.x, cubchoo.x) + abs(finn.x - cubchoo.x) // 2
                effect_y = min(finn.y, cubchoo.y) + abs(finn.y - cubchoo.y) // 2
                effects.add_effect(push_effect.PushEffect(effect_x, effect_y))
                cubchoo_character.Cubchoo.hit_sound.play()
                finn.frame_stop = True
                
        collision.collision_object_and_character(map, cubchoo, frame_time) 
        collision.collision_tile_and_character(map, cubchoo, frame_time)
        if cubchoo.opacify < 0:
            cubchooes.remove(cubchoo)
    
    if len(cubchooes) <= 10:
        global cubchoo_respone_time_A
        cubchoo_respone_time_A -= frame_time
        if cubchoo_respone_time_A < 0:
            object = map.to_trigger('Respone-A')
            cubchoo = cubchoo_character.Cubchoo()
            cubchoo.x, cubchoo.y = object.x, map.mapoffsety + map.mapheight - object.y
            cubchooes.append(cubchoo)
            cubchoo_character.Cubchoo.respone_sound.play()
            cubchoo_respone_time_A = 3.0

        global cubchoo_respone_time_B
        cubchoo_respone_time_B -= frame_time
        if cubchoo_respone_time_B < 0:
            object = map.to_trigger('Respone-B')
            cubchoo = cubchoo_character.Cubchoo()
            cubchoo.x, cubchoo.y = object.x, map.mapoffsety + map.mapheight - object.y
            cubchooes.append(cubchoo)
            cubchoo_character.Cubchoo.respone_sound.play()
            cubchoo_respone_time_B = 5.0

    effects.update(frame_time)

    map.update(finn, frame_time)

    for maple in maples:
        maple.update(frame_time)

    '''
    for snow in snows:
        snow.update(frame_time)
    '''

    for cloud in clouds:
        cloud.update(frame_time)

    collision_trigger_and_player()