Пример #1
0
    def load_skin_selection_menu():
        print("Loading the skin selection menu...")
        x_arrow, y_arrow = game.Game.LENGTH / 3.5, - game.Game.LENGTH / 6
        arrow_height, arrow_width = 34.6, 30
        rect_txt_p1 = - (y_arrow + arrow_height / 2), - x_arrow + arrow_width / 2
        rect_txt_p2 = - (y_arrow - arrow_height / 2), x_arrow - arrow_width / 2
        rect_window_p1 = rect_txt_p1[0] - 20, rect_txt_p1[1]  # 20 : shift between the two rectangles
        rect_window_p2 = rect_txt_p1[0] - 20 - Menu.SKIN_WINDOW_HEIGHT, rect_txt_p2[1]

        engine.init_engine()
        engine.set_keyboard_handler(Menu.keyboard_skin)
        _ = engine.GameObject(x_arrow, y_arrow, 0, 0, "arrow_right_skin", "gray", True)
        _ = engine.GameObject(- x_arrow, y_arrow, 0, 0, "arrow_left_skin", "gray", True)
        _ = shapes.Rectangle(rect_window_p1, rect_window_p2)
        Menu.skin_rect = shapes.Rectangle(rect_txt_p1, rect_txt_p2)
        Menu.display_skin()
Пример #2
0
def loadScene():
    global Scene
    gameObjects = []
    mtransform = engine.Transform(engine.Vector2(50, 50), 0, 0)
    mrendere = engine.Renderer(pygame.image.load("sprite/chat.png"))
    coponents = []
    spaceShip = engine.GameObject(mtransform, mrendere, coponents)
    gameObjects.append(spaceShip)

    scene = engine.Scene(gameObjects)
    return
Пример #3
0
    def load_level_selection_menu():
        print("Loading the level selection menu...")
        pos_arrow = - game.Game.LENGTH // 5, 3 * Menu.LEVEL_LINE_HEIGHT + Menu.FONT_SIZE
        rect_p1 = game.Game.LENGTH // 2, game.Game.LENGTH // 2
        rect_p2 = - game.Game.LENGTH // 2, - game.Game.LENGTH // 2

        engine.init_engine()
        engine.set_keyboard_handler(Menu.keyboard_lvl)
        Menu.cursor_position = Menu.cursor_position_on_screen = 1
        assert Menu.select_arrow is None, "Select arrow already initialized"
        Menu.lvl_rect = shapes.Rectangle(rect_p1, rect_p2, color_edge="white")
        Menu.select_arrow = engine.GameObject(*pos_arrow, 0, 0, "select_arrow", "black")
        engine.add_obj(Menu.select_arrow)
        Menu.display_level()
Пример #4
0
    def display_skin():
        y_arrow = - game.Game.LENGTH / 6
        arrow_height = 34.6
        y0 = y_arrow + arrow_height / 2 + 20
        r = Menu.skin_radius_list[Menu.skin_cursor]
        pos_skin_unpowered = 0, y0 + (Menu.SKIN_WINDOW_HEIGHT - r) / 3
        pos_skin_powered = 0, pos_skin_unpowered[1] + (Menu.SKIN_WINDOW_HEIGHT + 2 * r) / 3
        font_size = 15
        txt_pos = 0, y_arrow - font_size / 2 - 5

        if Menu.current_skin is not None:
            engine.del_obj(Menu.current_skin)
            engine.del_obj(Menu.current_skin_powered)
        Menu.current_skin = engine.GameObject(*pos_skin_unpowered, 0, 0, Menu.skin_list[Menu.skin_cursor], "white",
                                              True)
        Menu.current_skin_powered = engine.GameObject(*pos_skin_powered, 0, 0,
                                                      Menu.skin_list[Menu.skin_cursor] + "_powered", "white", True)
        Menu.current_skin.angle = 90
        Menu.current_skin_powered.angle = 180
        engine.add_obj(Menu.current_skin)
        Menu.skin_rect.draw()
        turtle.setpos(*txt_pos)
        turtle.pencolor("black")
        turtle.write(Menu.skin_list[Menu.skin_cursor], align="center", font=("Arial", font_size, "normal"))
Пример #5
0
    def load_main_menu():
        print("Loading the main menu...")
        pos_arrow = - game.Game.LENGTH / 5, game.Game.LENGTH / 9
        pos_title = 0, game.Game.LENGTH / 3
        x0, y0 = pos_arrow[0] + 40, pos_arrow[1] - Menu.LINE_HEIGHT / 2 + 5  # + 5 to have arrow and text aligned
        font_size_title = 55

        engine.set_keyboard_handler(Menu.keyboard_main)
        assert Menu.select_arrow is None, "Select arrow already initialized"
        Menu.select_arrow = engine.GameObject(*pos_arrow, 0, 0, "select_arrow", "black")
        engine.add_obj(Menu.select_arrow)
        Menu.cursor_position = 0

        turtle.clear()
        turtle.setpos(*pos_title)  # options to select
        turtle.write("Name of the game", align="center", font=("Arial", font_size_title, "normal"))
        str_list = ["Choose a level", "Tutorial", "Choose a skin", "Quit game"]
        for i in range(len(str_list)):
            turtle.setpos(x0, y0 - i * Menu.LINE_HEIGHT)
            turtle.write(str_list[i], font=("Arial", Menu.FONT_SIZE, "normal"))

        if not Menu.engine_launched:
            Menu.engine_launched = True
            engine.engine()
Пример #6
0
def run_game():
    global link, camera, camera_movement, \
        link_movement, room_movement, var, game_map, force_exit, textboxes
    var = {
        'game_ticks': 0,
        'can_move': True,
        'move_camera': False,
        'camera_increment': 0,
        'clear_previous': False,
        'current_frame': 0,
        'animation_frames': 0,
        'camera_position': (1, 11),
        'short_grass_drawn': False,
        'invert': True
    }

    force_exit = False

    textboxes = []

    link = game.link.Link()
    camera = engine.GameObject(collision_rect=(pygame.Rect(
        (0, 0), (COORDINATE_WIDTH, COORDINATE_HEIGHT))),
                               handle_collisions=True,
                               object_type="camera",
                               persistent=True)
    camera.collision_rect.center = camera.rect.center

    link.set_animation('link_walk_down')

    camera_movement = {
        0: (TRANSITION_SPEED * (COORDINATE_WIDTH / 32), 0),
        1: (0, -TRANSITION_SPEED * (COORDINATE_HEIGHT / 32)),
        2: (-TRANSITION_SPEED * (COORDINATE_WIDTH / 32), 0),
        3: (0, TRANSITION_SPEED * (COORDINATE_HEIGHT / 32))
    }
    room_movement = {
        0: (TRANSITION_SPEED * .5, 0),
        1: (0, -TRANSITION_SPEED * .5),
        2: (-TRANSITION_SPEED * .5, 0),
        3: (0, TRANSITION_SPEED * .5)
    }

    game_scene.insert_object_centered(
        link, (112 + COORDINATE_WIDTH * var['camera_position'][0],
               80 + COORDINATE_HEIGHT * var['camera_position'][1]))
    game_scene.insert_object_centered(
        camera, (80 + COORDINATE_WIDTH * var['camera_position'][0],
                 64 + COORDINATE_HEIGHT * var['camera_position'][1]))
    current_state.update_collisions()
    game_scene.center_view_on_object('game_view', camera)
    game_map.build_world(game_scene, game_scene.view_rects['game_view'])
    build_world()

    # Game loop
    while True:
        if force_exit:
            # print("Exit has been forced, ending run_game")
            return False
        clock.tick()
        if clock.update_ready:
            update_clock()
            update_logic()
            resource_manager.update_sound()

        if clock.frame_ready:
            # Draw functions
            draw_game()

            # Update display
            pygame.display.flip()

        # Event handling
        for event in pygame.event.get():
            if event.type == QUIT:
                terminate()
            handle_event(event)

        pygame.display.set_caption("FPS: " + str(clock.fps))