def collision_handler(state, collisions_list): for entity_name_1, entity_name_2 in collisions_list: if entity_name_1 == ENT_MAN: if entity_name_2 == ENT_SHOT: pass elif entity_name_2 == ENT_GHOST: entities.undo_last_move(state, ENT_MAN) if not movers.get_active(state, ENT_GHOST)[0] == "wait": wait_mover.add(state, ENT_GHOST, 1.0, prepend=True) incr_health(state, -80) if get_health(state) <= 0: do_game_over(state) else: entities.undo_last_move(state, ENT_GHOST) elif entity_name_2[0:len(ENT_PREFIX_COINS)] == ENT_PREFIX_COINS: incr_score(state, 10) destroy_mover.add(state, entity_name_2, do_replace=True) else: entities.undo_last_move(state, entity_name_1) elif entity_name_1 == ENT_SHOT: if entity_name_2[0:len(ENT_PREFIX_COINS)] == ENT_PREFIX_COINS: pass elif entity_name_2 == ENT_GHOST: do_ghost_boom(state, entities.get_pos(state, ENT_GHOST)) destroy_mover.add(state, ENT_GHOST, do_replace=True) do_shot_boom(state, entities.get_pos(state, ENT_SHOT)) destroy_mover.add(state, ENT_SHOT, do_replace=True) else: do_shot_boom(state, entities.get_pos(state, ENT_SHOT)) destroy_mover.add(state, ENT_SHOT, do_replace=True)
def start_stars_movement(state, mover_name): int_screen_width = int(screen.get_width(state)) int_screen_height = int(screen.get_height(state)) for x in xrange((int_screen_width / 256) + 1): for y in xrange((int_screen_height / 256) + 2): entity_name = star_name(x, y) jump_mover.add(state, entity_name, ((x * 2), (y * 2), 0)) linear_mover.add(state, entity_name, (0, -2), 0.25) wait_mover.add(state, entity_name, 0, start_stars_movement)
def start_movement(state, mover_name): path = ((5.0, 0), (0, 5.0), (-5.0, 0), (0, -5.0)) for index in xrange(len(path)): set_property_mover.add(state, "man", "set_active_sprite", "idle") wait_mover.add(state, "man", 2.0) set_property_mover.add(state, "man", "set_active_sprite", "walk") rel_vector = ((path[index][0]), (path[index][1])) linear_mover.add(state, "man", rel_vector, 1.0, ("auto", 0), None if index != len(path) - 1 else start_movement)