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 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]
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]
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
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
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
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