def load_level(level_loaded: Level): tile_x = level_loaded.TILE_X tile_y = level_loaded.TILE_Y offset_w = level_loaded.offset_w offset_h = level_loaded.offset_h entities = pygame.sprite.Group() platforms = [] enemies = [] players = [] # block : -1 # empty : 0 # ground : 1 # stairs : 2 # bar : 3 # fly : 4 # build the level y = offset_h for i_row in range(0, level_loaded.TILE_Y_NUM): x = offset_w level_row = level_loaded.level[i_row] for j_col in range(0, level_loaded.TILE_X_NUM): level_block = level_row[j_col] level_loaded.level_matrix[i_row][j_col] = 0 if level_block == "▉" or level_block == "P": e = PlatformBlock(level_loaded, x, y) platforms.append(e) entities.add(e) level_loaded.level_matrix[i_row][j_col] = -1 if level_block == "╬" or level_block == "E": e = StairsBlock(level_loaded, x, y) platforms.append(e) entities.add(e) level_loaded.level_matrix[i_row][j_col] = 2 if level_block == "-" or level_block == "B": e = BarBlock(level_loaded, x, y) platforms.append(e) entities.add(e) level_loaded.level_matrix[i_row][j_col] = 3 if level_block == "_" or level_block == "H": e = BarHBlock(x, y) platforms.append(e) entities.add(e) level_loaded.level_matrix[i_row][j_col] = 3 if level_block == "⊟" or level_block == "G": e = GoalBlock(level_loaded, x, y) platforms.append(e) entities.add(e) level_loaded.level_matrix[i_row][j_col] = -1 if level_block == "⊏" or level_block == "L": e = GoalBlockLeft(level_loaded, x, y) platforms.append(e) entities.add(e) level_loaded.level_matrix[i_row][j_col] = -1 if level_block == "⊐" or level_block == "R": e = GoalBlockRight(level_loaded, x, y) platforms.append(e) entities.add(e) level_loaded.level_matrix[i_row][j_col] = -1 if level_block == "⭐" or level_block == "S": e = StarItem(level_loaded, x, y) platforms.append(e) entities.add(e) if level_block == "g": e = Ghost( level_loaded, x, y, "Ghost", bg_color="#72A877", image_file='images/sprites/characters/enemies/ghost.png', flip=True, jump_sound=constants.PLAYER_P1_JUMP ) entities.add(e) enemies.append(e) if level_block == "t": e = Enemy( level_loaded, x, y, "Tritannus", None, None, None, None, bg_color="#72A877", image_file='images/winx_raw/tritannus_01.png', flip=True, jump_sound=constants.PLAYER_P1_JUMP ) entities.add(e) enemies.append(e) if level_block == "1" or level_block == "Y": e = Player( level_loaded, x, y, "Y", K_UP, K_DOWN, K_RIGHT, K_LEFT, constants.PLAYER_P1_COLOR_BG, 'images/winx_raw/tritannus_01.png', 'images/winx_raw/tritannus_01.png', # constants.IMAGE_P1, # constants.IMAGE_P1_TRANSFORMED, flip=True, jump_sound=constants.PLAYER_P1_JUMP ) level_loaded.num_players = level_loaded.num_players + 1 players.append(e) player_p1 = e if level_block == "2" or level_block == "X": e = Player( level_loaded, x, y, "X", K_w, K_s, K_d, K_a, constants.PLAYER_P2_COLOR_BG, constants.IMAGE_P2, constants.IMAGE_P2_TRANSFORMED, flip=True, jump_sound=constants.PLAYER_P2_JUMP ) level_loaded.num_players = level_loaded.num_players + 1 players.append(e) player_p2 = e x += tile_x y += tile_y for i_row in range(0, level_loaded.TILE_Y_NUM-2): for j_col in range(0, level_loaded.TILE_X_NUM): if i_row < level_loaded.TILE_Y_NUM-1: if \ level_loaded.level_matrix[i_row+2][j_col] in [0, 4] and \ level_loaded.level_matrix[i_row+1][j_col] in [0, 4] and \ level_loaded.level_matrix[i_row][j_col] == 0: level_loaded.level_matrix[i_row][j_col] = 4 for p in players: entities.add(p) platforms.append(p) return entities, platforms, enemies, players
def load_level(level: Level, game_screen: GameScreen): tile_x = int(game_screen.w / level.TILE_X_NUM) tile_y = int(game_screen.h / level.TILE_Y_NUM) offset_w = game_screen.x_offset + int( round((game_screen.w - tile_x * level.TILE_X_NUM) / 2)) offset_h = game_screen.y_offset + int( round((game_screen.h - tile_y * level.TILE_Y_NUM) / 2)) level.offset_tile_x = offset_w level.offset_tile_y = offset_h constants.VELOCITY_MOVEMENT = level.VELOCITY_MOVEMENT constants.VELOCITY_JUMP = level.VELOCITY_JUMP constants.VELOCITY_MAX_FALL = level.VELOCITY_MAX_FALL constants.TILE_X = tile_x constants.TILE_Y = tile_y # constants.TILE_X_NUM = level.TILE_X_NUM # constants.TILE_Y_NUM = level.TILE_Y_NUM entities = pygame.sprite.Group() platforms = [] # build the level player_p1 = Player(0, 0, "dummy") player_p2 = Player(0, 0, "dummy") y = offset_h for level_row in level.get_level(): x = offset_w for level_block in level_row: if level_block == "P": e = PlatformBlock(x, y) platforms.append(e) entities.add(e) if level_block == "E": e = StairsBlock(x, y) platforms.append(e) entities.add(e) if level_block == "B": e = BarBlock(x, y) platforms.append(e) entities.add(e) if level_block == "H": e = BarHBlock(x, y) platforms.append(e) entities.add(e) if level_block == "G": e = GoalBlock(x, y) platforms.append(e) entities.add(e) if level_block == "L": e = GoalBlockLeft(x, y) platforms.append(e) entities.add(e) if level_block == "R": e = GoalBlockRight(x, y) platforms.append(e) entities.add(e) if level_block == "Y": player_p1 = Player( x, y, "Y", constants.PLAYER_P1_COLOR_BG, constants.IMAGE_P1, flip=True, force_background=level.player_force_background, jump_sound=constants.PLAYER_P1_JUMP) level.num_players = level.num_players + 1 if level_block == "X": player_p2 = Player( x, y, "X", constants.PLAYER_P2_COLOR_BG, constants.IMAGE_P2, flip=True, force_background=level.player_force_background, jump_sound=constants.PLAYER_P2_JUMP) level.num_players = level.num_players + 1 x += tile_x y += tile_y if player_p1.name is not "Dummy": platforms.append(player_p1) entities.add(player_p1) if player_p2.name is not "Dummy": entities.add(player_p2) platforms.append(player_p2) return entities, platforms, player_p1, player_p2