예제 #1
0
 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]
예제 #2
0
 def loadImage(self, texture_name, color_key=(0, 0, 0), **kwargs):
     """
     Función que carga una imagen
     :param texture_name: Dirección física de la textura
     :param color_key: �?ndice de color
     :param kwargs: Parámetros adicionales
     :return: Objeto imagen
     """
     # Si la imagen no ha sido cargada entonces se carga y se guarda
     if texture_name not in self.images.keys():
         if kwargs.get("alpha"):
             image = pygame.image.load(getImages(texture_name)).convert_alpha()
         else:
             image = pygame.image.load(getImages(texture_name)).convert(32)
             image.set_colorkey(color_key)
         self.images[texture_name] = image
     return self.images[texture_name]
예제 #3
0
 def load_image(self, texture_name, color_key=(0, 0, 0), **kwargs):
     """
     Función que carga una imagen
     :param texture_name: Dirección física de la textura
     :param color_key: Índice de color
     :param kwargs: Parámetros adicionales
     :return: Objeto imagen
     """
     # Si la imagen no ha sido cargada entonces se carga y se guarda
     if texture_name not in self.images.keys():
         if kwargs.get("alpha"):
             image = pygame.image.load(
                 getImages(texture_name)).convert_alpha()
         else:
             image = pygame.image.load(getImages(texture_name)).convert(32)
             image.set_colorkey(color_key)
         self.images[texture_name] = image
     return self.images[texture_name]
예제 #4
0
    def __init__(self, langs, window, world, game_config, user_config,
                 view_config, window_config, world_config, map_config):
        """
        Función constructora
        :param langs: Diccionario de idioma
        :param window: Ventana de la aplicación
        :param world: Objeto mundo
        :param game_config: Configuraciones del juego
        :param user_config: Configuraciones de usuario
        :param view_config: Configuraciones de la vista
        :param window_config: Configuraciones de la ventana
        :param world_config: Configuraciones del mundo
        :param map_config: Configuraciones del mapa
        :return: void
        """

        # Variables de clase
        self.config_game = game_config  # configuraciones del juego
        self.config_map = map_config  # configuracion del mapa
        self.config_user = user_config  # configuraciones de usuario
        self.config_view = view_config  # configuraciones de la vista
        self.config_window = window_config  # configuraciones de la ventana
        self.config_world = world_config  # configuraciones del mundo
        self.controller = None  # controlador
        self.font = getFonts("menu")  # se obtiene la fuente por defecto
        self.langs = langs  # idiomas del juego
        self.menu_inicial_title_font = pygame.font.Font(getFonts("nfs"), 55)
        self.screen = window.get_surface()  # se obtiene la superficie de dibujo
        self.sound_state = game_config.isTrue(
            "ENABLESOUND")  # define si los sonidos estan activos
        self.view = None  # vista
        self.window = window  # ventana de visualización
        self.world = world  # mundo
        # Canales de sonido de los menues
        self.menuSoundChannel = pygame.mixer.Channel(4)
        self.menuSoundChannel.set_volume(
            float(self.config_world.getValue("CHANNEL_4")))
        self.menuButtonChannel = pygame.mixer.Channel(5)
        self.menuSoundChannel.set_volume(
            float(self.config_world.getValue("CHANNEL_5")))
        # Sonido de fondo del menu de inicio
        self.menu_inicial_sfx = pygame.mixer.Sound(getSounds("intro"))
        self.menu_button_up = pygame.mixer.Sound(getSounds("down"))
        self.menu_button_down = pygame.mixer.Sound(getSounds("up"))
        # Se renderiza la fuente del titulo
        self.menu_inicial_title = self.menu_inicial_title_font.render(
            self.langs.get(10), 1, (255, 255, 255))
        self.menu_inicial_title_shadow = self.menu_inicial_title_font.render(
            self.langs.get(10), 1, (0, 0, 0))
        self.menu_inicial_title_shadow_width = \
            self.menu_inicial_title_shadow.get_size()[0]
        self.menu_inicial_title_width = self.menu_inicial_title.get_size()[0]
        self.menu_inicial_title_shadow_pos = (
            self.window.get_window_width() / 2 - self.menu_inicial_title_shadow_width / 2 - 3,
            (self.window.get_window_height() - 400) / 2 - 70)
        self.menu_inicial_title_pos = (
            self.window.get_window_width() / 2 - self.menu_inicial_title_width / 2,
            (self.window.get_window_height() - 400) / 2 - 65)
        # Menues
        self.actualmenu = None
        self.menu_inicial = None
        self.menu_jugar = None
        self.menu_pausa = None
        # Se crean los menues
        self.intializeMenuInicial()
        self.setActualMenu(MENU_INICIAL)
        self.initializeMenuPausa()
        # Se crean las imagenes de fondo
        self.splashimages = []
        for key in range(1, 11):
            image = pygame.transform.scale(
                pygame.image.load(getImages("splash" + str(key))),
                (window.get_window_width(), window.get_window_height()))
            self.splashimages.append(image)
        # Tiempos de efectos visuales de fondo
        self.splashindex = 0
        self.splashmaxtime = 0
        self.splashtime = 0
예제 #5
0
    def __init__(self, langs, window, world, game_config, user_config,
                 view_config, window_config, world_config, map_config):
        """
        Función constructora
        :param langs: Diccionario de idioma
        :param window: Ventana de la aplicación
        :param world: Objeto mundo
        :param game_config: Configuraciones del juego
        :param user_config: Configuraciones de usuario
        :param view_config: Configuraciones de la vista
        :param window_config: Configuraciones de la ventana
        :param world_config: Configuraciones del mundo
        :param map_config: Configuraciones del mapa
        :return: void
        """

        # Variables de clase
        self.config_game = game_config  # configuraciones del juego
        self.config_map = map_config  # configuracion del mapa
        self.config_user = user_config  # configuraciones de usuario
        self.config_view = view_config  # configuraciones de la vista
        self.config_window = window_config  # configuraciones de la ventana
        self.config_world = world_config  # configuraciones del mundo
        self.controller = None  # controlador
        self.font = getFonts("menu")  # se obtiene la fuente por defecto
        self.langs = langs  # idiomas del juego
        self.menu_inicial_title_font = pygame.font.Font(getFonts("nfs"), 55)
        self.screen = window.get_surface(
        )  # se obtiene la superficie de dibujo
        self.sound_state = game_config.isTrue(
            "ENABLESOUND")  # define si los sonidos estan activos
        self.view = None  # vista
        self.window = window  # ventana de visualización
        self.world = world  # mundo
        # Canales de sonido de los menues
        self.menuSoundChannel = pygame.mixer.Channel(4)
        self.menuSoundChannel.set_volume(
            float(self.config_world.getValue("CHANNEL_4")))
        self.menuButtonChannel = pygame.mixer.Channel(5)
        self.menuSoundChannel.set_volume(
            float(self.config_world.getValue("CHANNEL_5")))
        # Sonido de fondo del menu de inicio
        self.menu_inicial_sfx = pygame.mixer.Sound(getSounds("intro"))
        self.menu_button_up = pygame.mixer.Sound(getSounds("down"))
        self.menu_button_down = pygame.mixer.Sound(getSounds("up"))
        # Se renderiza la fuente del titulo
        self.menu_inicial_title = self.menu_inicial_title_font.render(
            self.langs.get(10), 1, (255, 255, 255))
        self.menu_inicial_title_shadow = self.menu_inicial_title_font.render(
            self.langs.get(10), 1, (0, 0, 0))
        self.menu_inicial_title_shadow_width = \
            self.menu_inicial_title_shadow.get_size()[0]
        self.menu_inicial_title_width = self.menu_inicial_title.get_size()[0]
        self.menu_inicial_title_shadow_pos = (
            self.window.get_window_width() / 2 -
            self.menu_inicial_title_shadow_width / 2 - 3,
            (self.window.get_window_height() - 400) / 2 - 70)
        self.menu_inicial_title_pos = (
            self.window.get_window_width() / 2 -
            self.menu_inicial_title_width / 2,
            (self.window.get_window_height() - 400) / 2 - 65)
        # Menues
        self.actualmenu = None
        self.menu_inicial = None
        self.menu_jugar = None
        self.menu_pausa = None
        # Se crean los menues
        self.intializeMenuInicial()
        self.setActualMenu(MENU_INICIAL)
        self.initializeMenuPausa()
        # Se crean las imagenes de fondo
        self.splashimages = []
        for key in range(1, 11):
            image = pygame.transform.scale(
                pygame.image.load(getImages("splash" + str(key))),
                (window.get_window_width(), window.get_window_height()))
            self.splashimages.append(image)
        # Tiempos de efectos visuales de fondo
        self.splashindex = 0
        self.splashmaxtime = 0
        self.splashtime = 0
예제 #6
0
    def __init__(self, window, clock, world, lang, view_config, menus):
        """
        Función constructora
        :param window: Ventana de la aplicación
        :param clock: Reloj de pygame
        :param world: Mundo lógico
        :param lang: Diccionario de idiomas
        :param view_config: Configuraciones de la vista
        :param menus: Menues del juego
        :return: void
        """

        # Se guardan los parametros
        self.config = view_config  # configuracion de la vista
        self.controller = None  # controlador
        self.lang = lang  # idiomas
        self.map = world.get_actual_map()  # mapa actual
        self.menu = menus  # menus del juego
        self.window = window  # ventana
        self.world = world  # mundo
        if self.map is None:
            self.isPlaying = False
        else:
            self.isPlaying = True
        # Se cargan configuraciones
        self.mark_ground_size = int(view_config.getValue(
            "GROUND_MARK_SIZE"))  # ancho de la marca en la tierra
        self.mark_track_size = int(view_config.getValue(
            "TRACK_MARK_SIZE"))  # ancho de la marca en la pista
        self.show_fps = view_config.isTrue(
            "SHOWFPS")  # define si se dibuja el fps en el titulo de la ventana
        self.show_ghost = view_config.isTrue(
            "SHOWGHOST")  # define si se dibuja al ghost o no
        self.show_mark_ground = view_config.isTrue(
            "SHOWMARKGROUND")  # define si se muestran las marcas en la tierra
        self.show_mark_track = view_config.isTrue(
            "SHOWMARKTRACK")  # define si se muestran las marcas en el camino
        self.show_player = view_config.isTrue(
            "SHOWPLAYER")  # se define si se dibuja o no el jugador en pantalla
        self.show_ruedas = view_config.isTrue(
            "SHOWRUEDAS")  # define si se dibujan las ruedas o no
        self.show_track = view_config.isTrue(
            "SHOWTRACK")  # define si se muestra la pista o no
        self.show_ui = view_config.isTrue(
            "SHOWUI")  # se define si se dibujan los paneles
        self.viewConfig = view_config  # configuraciones de la vista
        # Se defienen variables
        self.clock = clock  # reloj del juego
        self.screen = self.window.get_surface()  # superficie de dibujo
        self.windowHeight = self.window.get_window_height()  # alto de la ventana
        self.windowWidth = self.window.get_window_width()  # ancho de la ventana
        # Se crean objetos del HUD
        self.OutOfRoadFont = pygame.font.Font(getFonts("speed"),
                                              20)  # fuente fuera de la pista
        self.buttonsResultsFont = pygame.font.Font(getFonts("menu"),
                                                   20)  # fuentes de los botones de la ventana de resultados
        self.lapFont = pygame.font.Font(getFonts("lap"),
                                        40)  # fuente del contador de vueltas
        self.lapFontL = pygame.font.Font(getFonts("lap"),
                                         38)  # fuente del contador de vueltas
        self.lapPos = (self.windowWidth * 0.90,
                       self.windowHeight * 0.05)  # posición del cuenta-vueltas
        self.lapRect = pygame.image.load(
            getImages("lap_rect")).convert_alpha()  # recuadro de las vueltas
        self.lapTimeFont = pygame.font.Font(getFonts("speed"),
                                            20)  # fuente del contador de tiempo
        self.lapTimePos = (self.windowWidth * 0.03,
                           self.windowHeight * 0.05)  # posición del tiempo total
        self.posOutOfRoad = (
            self.windowWidth * 0.5 - 100,
            self.windowHeight * 0.95)  # posición del mensaje -fuera de la pista-
        self.resultsButtonNextPos = (
            int((self.windowWidth + 680) / 2) - 15, int(
                (
                    self.windowHeight + 400) / 2) - 5)  # posicion del boton siguiente del plano de resultados
        self.resultsButtonQuitPos = (
            int((self.windowWidth - 680) / 2) + 15, int(
                (
                    self.windowHeight + 400) / 2) - 5)  # posicion del boton cerrar del plano de resultados
        self.resultsFontTitle = pygame.font.Font(getFonts("speed"),
                                                 30)  # fuente de los resultados
        self.resultsFontTitleContent = pygame.font.Font(getFonts("speed"),
                                                        14)  # fuente del contenido de la pantalla resultados
        self.resultsFontTitleSubtl = pygame.font.Font(getFonts("speed"),
                                                      20)  # fuente del subtitulo de la pantalla resultados
        self.resultsFontTitleSubtl2 = pygame.font.Font(getFonts("speed"),
                                                       17)  # fuente del subtitulo de la pantalla resultados
        self.resultsFontTitleTrack = pygame.font.Font(getFonts("speed"),
                                                      20)  # fuente del titulo de la pista de la pantalla resultados
        self.resultsScreen = pygame.image.load(
            getImages("results")).convert_alpha()  # pantalla de resultados
        self.resultsScreenPos = (int((self.windowWidth - 680) / 2),
                                 int((
                                         self.windowHeight - 400) / 2) - 25)  # posición en pantalla de los resultados
        self.revolPos = (self.windowWidth - 20,
                         self.windowHeight - 60)  # posición del cuenta-revoluciones
        self.revolRect = pygame.image.load(
            getImages(
                "revol_shadowed")).convert_alpha()  # textura del cuenta-revoluciones
        self.speedFont = pygame.font.Font(getFonts("speed"),
                                          40)  # fuente de los cambios
        self.speedPos = (
            20, self.windowHeight - 60)  # posición del velocimetro
        self.speedRect = pygame.image.load(getImages(
            "velocimeter_shadowed")).convert_alpha()  # textura del velocimetro
        # Objetos del HUD dependientes
        self.revolGraph = Revolgraph(33, (
            self.revolPos[0] - 170, self.revolPos[1] + 7), 100,
                                     40)  # gráfico de las revoluciones
예제 #7
0
    def __init__(self, window, clock, world, lang, view_config, menus):
        """
        Función constructora.
        :param window: Ventana de la aplicación
        :param clock: Reloj de pygame
        :param world: Mundo lógico
        :param lang: Diccionario de idiomas
        :param view_config: Configuraciones de la vista
        :param menus: Menues del juego
        :return: void
        """

        # Se guardan los parametros
        self.config = view_config  # configuracion de la vista
        self.controller = None  # controlador
        self.lang = lang  # idiomas
        self.map = world.get_actual_map()  # mapa actual
        self.menu = menus  # menus del juego
        self.window = window  # ventana
        self.world = world  # mundo
        if self.map is None:
            self.isPlaying = False
        else:
            self.isPlaying = True

        # Se cargan configuraciones
        self.mark_ground_size = int(view_config.getValue(
            "GROUND_MARK_SIZE"))  # ancho de la marca en la tierra
        self.mark_track_size = int(view_config.getValue(
            "TRACK_MARK_SIZE"))  # ancho de la marca en la pista
        self.show_fps = view_config.isTrue(
            "SHOWFPS")  # define si se dibuja el fps en el titulo de la ventana
        self.show_ghost = view_config.isTrue(
            "SHOWGHOST")  # define si se dibuja al ghost o no
        self.show_mark_ground = view_config.isTrue(
            "SHOWMARKGROUND")  # define si se muestran las marcas en la tierra
        self.show_mark_track = view_config.isTrue(
            "SHOWMARKTRACK")  # define si se muestran las marcas en el camino
        self.show_player = view_config.isTrue(
            "SHOWPLAYER")  # se define si se dibuja o no el jugador en pantalla
        self.show_ruedas = view_config.isTrue(
            "SHOWRUEDAS")  # define si se dibujan las ruedas o no
        self.show_track = view_config.isTrue(
            "SHOWTRACK")  # define si se muestra la pista o no
        self.show_ui = view_config.isTrue(
            "SHOWUI")  # se define si se dibujan los paneles
        self.viewConfig = view_config  # configuraciones de la vista

        # Se defienen variables
        self.clock = clock  # reloj del juego
        self.screen = self.window.get_surface()  # superficie de dibujo
        self.windowHeight = self.window.get_window_height(
        )  # alto de la ventana
        self.windowWidth = self.window.get_window_width(
        )  # ancho de la ventana

        # Se crean objetos del HUD
        self.OutOfRoadFont = pygame.font.Font(getFonts("speed"),
                                              20)  # fuente fuera de la pista
        self.buttonsResultsFont = pygame.font.Font(
            getFonts("menu"),
            20)  # fuentes de los botones de la ventana de resultados
        self.lapFont = pygame.font.Font(getFonts("lap"),
                                        40)  # fuente del contador de vueltas
        self.lapFontL = pygame.font.Font(getFonts("lap"),
                                         38)  # fuente del contador de vueltas
        self.lapPos = (self.windowWidth * 0.90, self.windowHeight * 0.05
                       )  # posición del cuenta-vueltas
        self.lapRect = pygame.image.load(
            getImages("lap_rect")).convert_alpha()  # recuadro de las vueltas
        self.lapTimeFont = pygame.font.Font(
            getFonts("speed"), 20)  # fuente del contador de tiempo
        self.lapTimePos = (self.windowWidth * 0.03, self.windowHeight * 0.05
                           )  # posición del tiempo total
        self.posOutOfRoad = (self.windowWidth * 0.5 - 100,
                             self.windowHeight * 0.95
                             )  # posición del mensaje -fuera de la pista-
        self.resultsButtonNextPos = (
            int((self.windowWidth + 680) / 2) - 15,
            int((self.windowHeight + 400) / 2) - 5
        )  # posicion del boton siguiente del plano de resultados
        self.resultsButtonQuitPos = (
            int((self.windowWidth - 680) / 2) + 15,
            int((self.windowHeight + 400) / 2) - 5
        )  # posicion del boton cerrar del plano de resultados
        self.resultsFontTitle = pygame.font.Font(
            getFonts("speed"), 30)  # fuente de los resultados
        self.resultsFontTitleContent = pygame.font.Font(
            getFonts("speed"),
            14)  # fuente del contenido de la pantalla resultados
        self.resultsFontTitleSubtl = pygame.font.Font(
            getFonts("speed"),
            20)  # fuente del subtitulo de la pantalla resultados
        self.resultsFontTitleSubtl2 = pygame.font.Font(
            getFonts("speed"),
            17)  # fuente del subtitulo de la pantalla resultados
        self.resultsFontTitleTrack = pygame.font.Font(
            getFonts("speed"),
            20)  # fuente del titulo de la pista de la pantalla resultados
        self.resultsScreen = pygame.image.load(
            getImages("results")).convert_alpha()  # pantalla de resultados
        self.resultsScreenPos = (int(
            (self.windowWidth - 680) / 2), int(
                (self.windowHeight - 400) / 2) - 25
                                 )  # posición en pantalla de los resultados
        self.revolPos = (self.windowWidth - 20, self.windowHeight - 60
                         )  # posición del cuenta-revoluciones
        self.revolRect = pygame.image.load(
            getImages("revol_shadowed")).convert_alpha(
            )  # textura del cuenta-revoluciones
        self.speedFont = pygame.font.Font(getFonts("speed"),
                                          40)  # fuente de los cambios
        self.speedPos = (20, self.windowHeight - 60
                         )  # posición del velocimetro
        self.speedRect = pygame.image.load(getImages(
            "velocimeter_shadowed")).convert_alpha()  # textura del velocimetro

        # Objetos del HUD dependientes
        self.revolGraph = Revolgraph(
            33, (self.revolPos[0] - 170, self.revolPos[1] + 7), 100,
            40)  # gráfico de las revoluciones