Ejemplo n.º 1
0
    def __init__(
        self, config_world, config_map, window, checksum, score_config, user_config, lang, game_config, **kwargs
    ):
        """
        Función constructora
        :param config_world: Configuraciones del mundo
        :param config_map: Configuraciones del mapa
        :param window: Ventana de la aplicación
        :param checksum: Checksum de la aplicación
        :param score_config: Configuraciones del scoreboard
        :param user_config: Configuraciones del usuario
        :param lang: Diccionario de idioma
        :param game_config: Configuraciones del juego
        :param kwargs: Parámetros adicionales
        :return: void
        """

        # Se define si se imprime o no en consola
        if kwargs.get("verbose"):
            self.verbose = True
        else:
            self.verbose = False
        # Variables de clase
        self.actualMap = None  # mapa actual
        self.actualMapIndex = -1  # indice del mapa actual
        self.checksum = checksum  # checksum del juego
        self.configMap = config_map  # configuraciones de los mapas
        self.configWorld = config_world  # configuración del mundo
        self.gameConfig = game_config  # configuraciones del juego
        self.images = {}  # Imagenes del juego
        self.langs = lang  # Idioma del juego
        self.playerName = user_config.getValue("NAME")  # nombre del jugador
        self.scoreConfig = score_config  # configuraciones del scoreboard
        self.userConfig = user_config  # configuraciones del usuario
        self.window = window  # ventana del programa
        # Se cargan los sonidos
        self.sound_state = game_config.isTrue("ENABLESOUND")  # define si se activan los sonidos o no
        self.sounds = [
            [
                self.load_sound("m1"),
                self.load_sound("n"),
                self.load_sound("m1"),
                self.load_sound("m2"),
                self.load_sound("m3"),
                self.load_sound("m4"),
                self.load_sound("m5"),
            ],
            [
                self.load_sound("r1"),
                self.load_sound("n"),
                self.load_sound("r1"),
                self.load_sound("r2"),
                self.load_sound("r3"),
                self.load_sound("r4"),
                self.load_sound("r5"),
            ],
            self.load_sound("offroad"),
            [self.load_sound("track1"), self.load_sound("track2"), self.load_sound("track3")],
            self.load_sound("results"),
            self.load_sound("intro"),
            self.load_sound("wheelborder"),
        ]
        self.soundsChannel = [
            pygame.mixer.Channel(0),
            pygame.mixer.Channel(1),
            pygame.mixer.Channel(2),
            pygame.mixer.Channel(3),
        ]
        # Se configuran los canales de sonido
        for i in range(len(self.soundsChannel)):
            self.soundsChannel[i].set_volume(float(self.configWorld.getValue("CHANNEL_" + str(i))))
        # Se crea el navegador web
        self.browser = Browser()
        self.browser.addHeaders(HREF_HEADERS)
Ejemplo n.º 2
0
class World(object):
    """Mundo lógico"""

    def __init__(
        self, config_world, config_map, window, checksum, score_config, user_config, lang, game_config, **kwargs
    ):
        """
        Función constructora
        :param config_world: Configuraciones del mundo
        :param config_map: Configuraciones del mapa
        :param window: Ventana de la aplicación
        :param checksum: Checksum de la aplicación
        :param score_config: Configuraciones del scoreboard
        :param user_config: Configuraciones del usuario
        :param lang: Diccionario de idioma
        :param game_config: Configuraciones del juego
        :param kwargs: Parámetros adicionales
        :return: void
        """

        # Se define si se imprime o no en consola
        if kwargs.get("verbose"):
            self.verbose = True
        else:
            self.verbose = False
        # Variables de clase
        self.actualMap = None  # mapa actual
        self.actualMapIndex = -1  # indice del mapa actual
        self.checksum = checksum  # checksum del juego
        self.configMap = config_map  # configuraciones de los mapas
        self.configWorld = config_world  # configuración del mundo
        self.gameConfig = game_config  # configuraciones del juego
        self.images = {}  # Imagenes del juego
        self.langs = lang  # Idioma del juego
        self.playerName = user_config.getValue("NAME")  # nombre del jugador
        self.scoreConfig = score_config  # configuraciones del scoreboard
        self.userConfig = user_config  # configuraciones del usuario
        self.window = window  # ventana del programa
        # Se cargan los sonidos
        self.sound_state = game_config.isTrue("ENABLESOUND")  # define si se activan los sonidos o no
        self.sounds = [
            [
                self.load_sound("m1"),
                self.load_sound("n"),
                self.load_sound("m1"),
                self.load_sound("m2"),
                self.load_sound("m3"),
                self.load_sound("m4"),
                self.load_sound("m5"),
            ],
            [
                self.load_sound("r1"),
                self.load_sound("n"),
                self.load_sound("r1"),
                self.load_sound("r2"),
                self.load_sound("r3"),
                self.load_sound("r4"),
                self.load_sound("r5"),
            ],
            self.load_sound("offroad"),
            [self.load_sound("track1"), self.load_sound("track2"), self.load_sound("track3")],
            self.load_sound("results"),
            self.load_sound("intro"),
            self.load_sound("wheelborder"),
        ]
        self.soundsChannel = [
            pygame.mixer.Channel(0),
            pygame.mixer.Channel(1),
            pygame.mixer.Channel(2),
            pygame.mixer.Channel(3),
        ]
        # Se configuran los canales de sonido
        for i in range(len(self.soundsChannel)):
            self.soundsChannel[i].set_volume(float(self.configWorld.getValue("CHANNEL_" + str(i))))
        # Se crea el navegador web
        self.browser = Browser()
        self.browser.addHeaders(HREF_HEADERS)

    def clear_actual_map(self):
        """
        Borra el mapa actual
        :return: void
        """
        if self.actualMap is not None:
            self.actualMap.clean()

    def get_actual_index(self):
        """
        Retorna el índice del mapa actual
        :return: void
        """
        return self.actualMapIndex

    def get_actual_map(self):
        """
        Retorna el mapa actual
        :return: Objeto <track>
        """
        return self.actualMap

    def load_image(self, texture_name, color_key=(0, 0, 0), **kwargs):
        """
        Función que carga una imagen
        :param texture_name: Path de la textura
        :param color_key: Tono de color
        :param kwargs: Parámetros adicionales
        :return: Imagen
        """
        # Si la imagen no ha sido cargada entonces se carga y se guarda
        # Si se rota
        if kwargs.get("rotate"):
            texture_name_rot = texture_name + "_r" + str(kwargs.get("rotate"))
            if texture_name_rot not in self.images.keys():
                if self.verbose:
                    print self.langs.get(55, texture_name)
                texture_path = getImages(texture_name)
                if texture_path != -1:
                    # Se obtiene el alpha
                    if kwargs.get("alpha"):
                        image = pygame.image.load(texture_path).convert_alpha()
                    else:
                        image = pygame.image.load(texture_path).convert(32)
                        image.set_colorkey(color_key)
                    image = pygame.transform.rotate(image, int(kwargs.get("rotate")))
                    self.images[texture_name_rot] = image
                else:
                    self.images[texture_name_rot] = pygame.image.load(getImages("missing")).convert_alpha()
                    if self.verbose:
                        print self.lang.get(53, self.langs.get(51, texture_name))
            return self.images[texture_name_rot]
        # Si no se rota
        else:
            if texture_name not in self.images.keys():
                if self.verbose:
                    print self.langs.get(55, texture_name)
                texture_path = getImages(texture_name)
                if texture_path != -1:
                    # Se obtiene el alpha
                    if kwargs.get("alpha"):
                        image = pygame.image.load(texture_path).convert_alpha()
                    else:
                        image = pygame.image.load(texture_path).convert(32)
                        image.set_colorkey(color_key)
                    self.images[texture_name] = image
                else:
                    self.images[texture_name] = pygame.image.load(getImages("missing")).convert_alpha()
                    if self.verbose:
                        print self.lang.get(53, self.langs.get(51, texture_name))
            return self.images[texture_name]

    def load_map(self, index=None):
        """
        Crea un mapa
        :param index: Indice de la pista a cargar
        :return: void
        """
        if index is None:
            index = int(self.configMap.getValue("DEFAULTMAP"))
        else:
            if index == NEXT_TRACK:
                index = get_next_track(self.actualMapIndex)
        # Si el indice no existe
        if index not in TRACKS.keys():
            throw(ERROR_TRACKNOTEXIST, index)
        self.actualMapIndex = index
        # Se crea el objeto
        self.actualMap = mapTrack(self.configMap, self.window)
        # Se define el titulo del mapa
        self.actualMap.setTitle(TRACKS[index])
        if self.verbose:
            print self.langs.get(56, self.actualMap.getTrackTitle())

        # Pista 1 - El origen
        if index == 1:
            try:
                # Se definen los límites del mapas
                self.actualMap.setMapLimits(-2500, -2200, 3200, 3200)
                # Se definen las vueltas máximas
                self.actualMap.setLaps(3)
                # Se definen los objetivos del mapa
                self.actualMap.setObjetives([(17.5, 19.5, 23.5), (17.0, 19.2, 22.5), (15.5, 17.1, 20.0)])
                # Se define el fondo del mundo
                self.actualMap.setBackground(self.load_image("grass", alpha=False))
                # Se agrega al jugador
                self.actualMap.addCar(
                    int(self.userConfig.getValue("TYPECAR")),
                    self.userConfig.getValue("TEXTURE"),
                    True,
                    0,
                    True,
                    self.actualMap.getTrackLogic(),
                    self.sounds,
                    self.soundsChannel,
                    self.checksum,
                    self.scoreConfig,
                    self.playerName,
                    self.actualMap.getTrackTitle(),
                    self.gameConfig,
                    self.browser,
                    rotate=-270,
                    verbose=self.verbose,
                )
                # Se agregan decoraciones
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1650, 0))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1400, -250))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1440, 300))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (800, 100))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (750, -300))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (650, -600))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-600, -600))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-600, -1200))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-400, -1400))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-180, -150))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1350, -1250))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (180, -800))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (180, 500))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (180, 500))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-450, 550))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1300, 750))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1200, 0))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (0, 1300))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (700, 1280))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1400, 1080))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (793, -1607))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1603, -677))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1483, 523))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (283, 1453))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (913, 1363))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1397, 943))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1067, -167))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-1037, 1363))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-1577, 343))
                # Se agregan los caminos
                self.actualMap.addTrack(self.load_image("goal_w", alpha=True, rotate=180), (100, 200))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (500, 200))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (500, -200))
                self.actualMap.addTrack(self.load_image("c4_4", alpha=True), (100, -300))
                self.actualMap.addTrack(self.load_image("c3_2", alpha=True), (-100, -1000))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (200, -1185))
                self.actualMap.addTrack(self.load_image("rect_w_2", alpha=True), (500, -1185))
                self.actualMap.addTrack(self.load_image("c2_3", alpha=True), (1100, -900))
                self.actualMap.addTrack(self.load_image("rect_h_4", alpha=True), (1100, -600))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (1100, -300))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (1100, 0))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (1100, 300))
                self.actualMap.addTrack(self.load_image("rect_h_1", alpha=True), (1100, 600))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (1100, 1000))
                self.actualMap.addTrack(self.load_image("rect_w_3", alpha=True), (700, 1000))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (400, 1000))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (200, 1000))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-100, 1000))
                self.actualMap.addTrack(self.load_image("rect_w_4", alpha=True), (-400, 1000))
                self.actualMap.addTrack(self.load_image("c4_2", alpha=True), (-700, 1000))
                self.actualMap.addTrack(self.load_image("c3_3", alpha=True), (-600, 500))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (-300, 215))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-100, 200))
                # Se define la posición inicial del jugador
                self.actualMap.player.set_default_pos((400, 350))
            except:
                print self.langs.get(53, self.langs.get(57, self.actualMap.getTrackTitle()))
                self.clear_actual_map()
        # Pista 2 - Adelaide raceway
        elif index == 2:
            try:
                # Se definen los límites del mapas
                self.actualMap.setMapLimits(-3500, -2700, 5000, 1400)
                # Se definen las vueltas máximas
                self.actualMap.setLaps(3)
                # Se definen los objetivos del mapa
                self.actualMap.setObjetives([(28.8, 30.5, 32.9), (23.5, 25.0, 27.9), (21.3, 23.0, 24.5)])
                # Se define el fondo del mundo
                self.actualMap.setBackground(self.load_image("sand3", alpha=False))
                # Se agrega al jugador
                self.actualMap.addCar(
                    int(self.userConfig.getValue("TYPECAR")),
                    self.userConfig.getValue("TEXTURE"),
                    True,
                    180,
                    True,
                    self.actualMap.getTrackLogic(),
                    self.sounds,
                    self.soundsChannel,
                    self.checksum,
                    self.scoreConfig,
                    self.playerName,
                    self.actualMap.getTrackTitle(),
                    self.gameConfig,
                    self.browser,
                    rotate=-270,
                    verbose=self.verbose,
                )
                # Se agregan decoraciones
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (1400, 1000))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-2200, 1000))
                self.actualMap.addDecoration(self.load_image("tree5", alpha=True), (-3000, 500))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (0, -150))
                self.actualMap.addDecoration(self.load_image("tree5", alpha=True), (-2000, -140))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (1600, 100))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (600, 500))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-1500, 480))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-3000, 1200))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-1600, 2000))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-350, 950))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (1000, 1600))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (2600, 1000))
                self.actualMap.addDecoration(self.load_image("tree5", alpha=True), (1693, 1573))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-767, -227))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-1667, -257))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-3227, 643))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-2627, 1993))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (2203, 403))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-737, 1303))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (-1007, 583))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (523, 913))
                self.actualMap.addDecoration(self.load_image("tree3", alpha=True), (223, 1573))
                self.actualMap.addDecoration(self.load_image("tree5", alpha=True), (-2687, -47))
                self.actualMap.addDecoration(self.load_image("tree5", alpha=True), (2323, 1393))
                self.actualMap.addDecoration(self.load_image("tree5", alpha=True), (-1367, 1363))
                self.actualMap.addDecoration(self.load_image("tree5", alpha=True), (163, 433))
                # Se agregan los caminos
                self.actualMap.addTrack(self.load_image("goal_w", alpha=True, rotate=0), (100, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-200, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-500, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-800, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1100, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1300, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1600, 200))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (-1900, 215))
                self.actualMap.addTrack(self.load_image("c3_4", alpha=True), (-2200, 600))
                self.actualMap.addTrack(self.load_image("rect_h_3", alpha=True), (-2585, 900))
                self.actualMap.addTrack(self.load_image("rect_h_2", alpha=True), (-2585, 1200))
                self.actualMap.addTrack(self.load_image("c4_4", alpha=True), (-2200, 1900))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (-1800, 1900))
                self.actualMap.addTrack(self.load_image("rect_h_1", alpha=True), (-1800, 1500))
                self.actualMap.addTrack(self.load_image("c3_2", alpha=True), (-1600, 1200))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (-1300, 1015))
                self.actualMap.addTrack(self.load_image("rect_w_3", alpha=True), (-1000, 1000))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (-600, 1000))
                self.actualMap.addTrack(self.load_image("c3_1", alpha=True), (-500, 600))
                self.actualMap.addTrack(self.load_image("c2_2", alpha=True), (0, 700))
                self.actualMap.addTrack(self.load_image("c4_3", alpha=True), (300, 1300))
                self.actualMap.addTrack(self.load_image("rect_w_4", alpha=True), (600, 1300))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (900, 1300))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1200, 1300))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1500, 1300))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1800, 1300))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (2200, 1300))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (2200, 900))
                self.actualMap.addTrack(self.load_image("rect_w_2", alpha=True), (1800, 815))
                self.actualMap.addTrack(self.load_image("c4_1", alpha=True), (1500, 800))
                self.actualMap.addTrack(self.load_image("c2_2", alpha=True), (1400, 400))
                self.actualMap.addTrack(self.load_image("rect_w_2", alpha=True), (900, 215))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (600, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (300, 200))
                # Se define la posición inicial del jugador
                self.actualMap.player.set_default_pos((490, 350))
            except:
                print self.langs.get(53, self.langs.get(57, self.actualMap.getTrackTitle()))
                self.clear_actual_map()
        # Pista 3 - Riverside intl
        elif index == 3:
            try:
                # Se definen los límites del mapas
                self.actualMap.setMapLimits(-3500, -2700, 5300, 2000)
                # Se definen las vueltas máximas
                self.actualMap.setLaps(3)
                # Se definen los objetivos del mapa
                self.actualMap.setObjetives([(37.2, 38.6, 40.0), (33.2, 35.6, 38.9), (31.4, 32.9, 34.6)])
                # Se define el fondo del mundo
                self.actualMap.setBackground(self.load_image("grass5", alpha=False))
                # Se agrega al jugador
                self.actualMap.addCar(
                    int(self.userConfig.getValue("TYPECAR")),
                    self.userConfig.getValue("TEXTURE"),
                    True,
                    180,
                    True,
                    self.actualMap.getTrackLogic(),
                    self.sounds,
                    self.soundsChannel,
                    self.checksum,
                    self.scoreConfig,
                    self.playerName,
                    self.actualMap.getTrackTitle(),
                    self.gameConfig,
                    self.browser,
                    rotate=-270,
                    verbose=self.verbose,
                )
                # Se agregan decoraciones
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (0, -300))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1500, -300))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-300, 300))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (1300, -320))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-2800, -200))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-2340, -700))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-3300, -700))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-3200, 470))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1200, -1163))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-3270, 1100))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-3000, 1883))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1950, 2000))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-690, 1850))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (180, 1490))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (1050, 1883))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1560, 1520))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (2670, 1343))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1080, 683))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-2220, 1193))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (570, 893))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-300, 833))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (2700, -127))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (2900, 653))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1230, 1193))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1560, 773))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (2130, 533))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1110, 233))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-1200, 233))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-2850, 683))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (480, 2213))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (1620, 383))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-3660, -517))
                # Se agregan los caminos
                self.actualMap.addTrack(self.load_image("goal_w", alpha=True), (0, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-300, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-600, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-900, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1200, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1500, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1800, 0))
                self.actualMap.addTrack(self.load_image("rect_w_4", alpha=True), (-2100, 0))
                self.actualMap.addTrack(self.load_image("c4_1", alpha=True), (-2400, 0))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (-2500, -400))
                self.actualMap.addTrack(self.load_image("c3_2", alpha=True), (-2900, -300))
                self.actualMap.addTrack(self.load_image("c4_4", alpha=True), (-2700, 400))
                self.actualMap.addTrack(self.load_image("rect_w_4", alpha=True), (-2400, 400))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-2100, 400))
                self.actualMap.addTrack(self.load_image("rect_w_2", alpha=True), (-1800, 415))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (-1400, 500))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (-1400, 900))
                self.actualMap.addTrack(self.load_image("rect_w_3", alpha=True), (-1800, 900))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (-2100, 915))
                self.actualMap.addTrack(self.load_image("c3_4", alpha=True), (-2400, 1300))
                self.actualMap.addTrack(self.load_image("c4_1", alpha=True), (-2700, 1700))
                self.actualMap.addTrack(self.load_image("rect_w_4", alpha=True), (-2400, 1700))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-2100, 1700))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1800, 1700))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1500, 1700))
                self.actualMap.addTrack(self.load_image("rect_w_3", alpha=True), (-1200, 1700))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (-800, 1700))
                self.actualMap.addTrack(self.load_image("c3_1", alpha=True), (-700, 1300))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (-300, 1300))
                self.actualMap.addTrack(self.load_image("c4_4", alpha=True), (100, 2000))
                self.actualMap.addTrack(self.load_image("c1_4", alpha=True), (800, 2000))
                self.actualMap.addTrack(self.load_image("c3_1", alpha=True), (900, 1300))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (1200, 1215))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1500, 1200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1800, 1200))
                self.actualMap.addTrack(self.load_image("rect_w_3", alpha=True), (2100, 1200))
                self.actualMap.addTrack(self.load_image("c1_2", alpha=True), (2600, 1200))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (2600, 700))
                self.actualMap.addTrack(self.load_image("c2_4", alpha=True), (2600, 400))
                self.actualMap.addTrack(self.load_image("rect_w_2", alpha=True), (1900, 15))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1600, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1300, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1000, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (700, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (500, 0))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (300, 0))
                # Se define la posición inicial del jugador
                self.actualMap.player.set_default_pos((387, 150))
            except:
                print self.langs.get(53, self.langs.get(57, self.actualMap.getTrackTitle()))
                self.clear_actual_map()
        # Santiago intl
        elif index == 4:
            try:
                # Se definen los límites del mapas
                self.actualMap.setMapLimits(-4400, -3500, 5500, 2500)
                # Se definen las vueltas máximas
                self.actualMap.setLaps(3)
                # Se definen los objetivos del mapa
                self.actualMap.setObjetives([(49.3, 51.0, 53.0), (50.0, 53.5, 58.6), (49.0, 50.5, 52.0)])
                # Se define el fondo del mundo
                self.actualMap.setBackground(self.load_image("grass", alpha=False))
                # Se agrega al jugador
                self.actualMap.addCar(
                    int(self.userConfig.getValue("TYPECAR")),
                    self.userConfig.getValue("TEXTURE"),
                    True,
                    270,
                    True,
                    self.actualMap.getTrackLogic(),
                    self.sounds,
                    self.soundsChannel,
                    self.checksum,
                    self.scoreConfig,
                    self.playerName,
                    self.actualMap.getTrackTitle(),
                    self.gameConfig,
                    self.browser,
                    rotate=-270,
                    verbose=self.verbose,
                )
                # Se agregan decoraciones
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-457, 433))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-1147, 493))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-997, -317))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1297, -407))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-2977, 643))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1717, -1067))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-427, -1187))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (503, -917))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (2603, -317))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (713, 793))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1253, 1213))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (2003, 2083))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (2123, 1123))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1853, 493))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-637, 703))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1987, 463))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-2647, 553))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-2257, 1153))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-2257, 1843))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1987, 2083))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-2677, 2683))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-1537, 2713))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1117, 1993))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-337, 1423))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (293, 313))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (1253, -347))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (2003, -467))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (3233, 253))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (3593, -467))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (3083, -1187))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-1207, 1153))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1987, 583))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-1327, -167))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-2077, -300))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-2677, 853))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-3037, 1513))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-3667, 1153))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-3847, 583))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1643, -1067))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (683, -857))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-2437, -197))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-3097, 2173))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-1867, 1423))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (323, 1603))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (803, 2353))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (2153, 1513))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (773, 283))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1703, -287))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (2903, 493))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-157, -1397))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-787, -1127))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (-3607, 73))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (443, 493))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-37, 1573))
                self.actualMap.addDecoration(self.load_image("tree0", alpha=True), (1673, 2563))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (983, 973))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (3383, -257))
                self.actualMap.addDecoration(self.load_image("tree1", alpha=True), (-247, -1067))
                # Se agregan los caminos
                self.actualMap.addTrack(self.load_image("goal_h", alpha=True), (0, 0))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (0, 300))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (0, 600))
                self.actualMap.addTrack(self.load_image("c4_4", alpha=True), (400, 1300))
                self.actualMap.addTrack(self.load_image("c2_4", alpha=True), (1100, 1700))
                self.actualMap.addTrack(self.load_image("c4_2", alpha=True), (1300, 2200))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (1700, 2200))
                self.actualMap.addTrack(self.load_image("rect_h_1", alpha=True), (1700, 1800))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (1700, 1500))
                self.actualMap.addTrack(self.load_image("rect_h_4", alpha=True), (1700, 1200))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (1700, 900))
                self.actualMap.addTrack(self.load_image("c4_1", alpha=True), (1300, 800))
                self.actualMap.addTrack(self.load_image("c3_3", alpha=True), (1500, 400))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (1800, 115))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (2100, 100))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (2400, 100))
                self.actualMap.addTrack(self.load_image("rect_w_3", alpha=True), (2700, 100))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (3100, 100))
                self.actualMap.addTrack(self.load_image("rect_h", alpha=True), (3100, -300))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (3100, -600))
                self.actualMap.addTrack(self.load_image("rect_w_2", alpha=True), (2700, -685))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (2400, -700))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (2100, -700))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (1800, -700))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (1500, -685))
                self.actualMap.addTrack(self.load_image("c3_3", alpha=True), (1200, -400))
                self.actualMap.addTrack(self.load_image("c1_1", alpha=True), (900, 0))
                self.actualMap.addTrack(self.load_image("c4_1", alpha=True), (500, 0))
                self.actualMap.addTrack(self.load_image("c2_3", alpha=True), (400, -400))
                self.actualMap.addTrack(self.load_image("rect_w_2", alpha=True), (-200, -685))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-500, -700))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-800, -700))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (-1100, -685))
                self.actualMap.addTrack(self.load_image("c3_3", alpha=True), (-1400, -400))
                self.actualMap.addTrack(self.load_image("c1_3", alpha=True), (-1700, 200))
                self.actualMap.addTrack(self.load_image("rect_w_3", alpha=True), (-2300, 200))
                self.actualMap.addTrack(self.load_image("rect_w_1", alpha=True), (-2600, 215))
                self.actualMap.addTrack(self.load_image("c3_4", alpha=True), (-2900, 600))
                self.actualMap.addTrack(self.load_image("c4_3", alpha=True), (-3000, 1200))
                self.actualMap.addTrack(self.load_image("c2_2", alpha=True), (-2500, 1400))
                self.actualMap.addTrack(self.load_image("rect_h_4", alpha=True), (-2500, 1700))
                self.actualMap.addTrack(self.load_image("rect_h_2", alpha=True), (-2485, 2000))
                self.actualMap.addTrack(self.load_image("c4_3", alpha=True), (-2200, 2600))
                self.actualMap.addTrack(self.load_image("c1_3", alpha=True), (-1600, 2600))
                self.actualMap.addTrack(self.load_image("c3_4", alpha=True), (-1200, 2000))
                self.actualMap.addTrack(self.load_image("c1_2", alpha=True), (-700, 1600))
                self.actualMap.addTrack(self.load_image("c2_2", alpha=True), (-700, 1100))
                self.actualMap.addTrack(self.load_image("c4_3", alpha=True), (-1200, 900))
                self.actualMap.addTrack(self.load_image("c3_1", alpha=True), (-1400, 300))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-1100, 200))
                self.actualMap.addTrack(self.load_image("rect_w", alpha=True), (-900, 200))
                self.actualMap.addTrack(self.load_image("c1_2", alpha=True), (-500, 200))
                self.actualMap.addTrack(self.load_image("c3_1", alpha=True), (-400, -300))
                self.actualMap.addTrack(self.load_image("c2_1", alpha=True), (0, -300))
                # Se define la posición inicial del jugador
                self.actualMap.player.set_default_pos((350, 110))
            except:
                print self.langs.get(53, self.langs.get(57, self.actualMap.getTrackTitle()))
                self.clear_actual_map()

    def load_sound(self, sound_file):
        """
        Carga un sonido
        :param sound_file: Archivo de sonido
        :return: Sonido
        """
        try:
            if self.verbose:
                print self.langs.get(52, sound_file)
            return pygame.mixer.Sound(getSounds(sound_file))
        except:
            if self.verbose:
                print self.langs.get(53, self.langs.get(54, sound_file))
            return pygame.mixer.Sound()