--- a06/jogo.py 2005-04-17 18:33:03.000000000 -0300 +++ a07/jogo.py 2005-10-08 12:24:11.000000000 -0300 @@ -4,9 +4,7 @@ ############################################################################### # # Mudanças em relação à versão anterior: -# - naves inimigas tem comportamento diferente (behaviour) -# - painel de estado do jogador (vidas e acertos) -# - otimizacoes: lê a imagem somente uma vez. (Game.load_images()) +# - otimizações: usar colorkey ao invés de transparência por pixel (alpha) # ############################################################################### @@ -17,7 +15,7 @@ import pygame from pygame.locals import * -images_dir = os.path.join( "..", "imagens" ) +images_dir = os.path.join( "..", "imagens-noalpha" ) # O random será muito útil para esse jogo, ele ajuda o jogo a perder # a monotonia @@ -360,10 +358,12 @@ self.last_xp = xp text = "XP: % 4d" % xp if self.bgcolor: - self.image = self.font.render( text, True, self.fgcolor, + self.image = self.font.render( text, False, self.fgcolor, self.bgcolor ) - else: - self.image = self.font.render( text, True, self.fgcolor ) + else: + self.image = self.font.render( text, False, self.fgcolor, + ( 255, 0, 255 ) ) + self.image.set_colorkey( ( 255, 0, 255 ), RLEACCEL ) screen.blit( self.image, self.pos ) @@ -450,7 +450,9 @@ if isinstance( image, str ): image = os.path.join( images_dir, image ) - image = pygame.image.load( image ).convert() + image = pygame.image.load( image ) + image.set_alpha( None, RLEACCEL ) # disable alpha + image = image.convert() self.isize = image.get_size() self.pos = [ 0, -1 * self.isize[ 1 ] ] @@ -469,7 +471,8 @@ for j in range( ( back.get_size()[ 1 ] / self.isize[ 1 ] ) ): back.blit( image, ( i * self.isize[ 0 ], j * self.isize[ 1 ] ) ) - self.image = back + back.set_alpha( None, RLEACCEL ) + self.image = back.convert() # __init__() @@ -527,11 +530,19 @@ """ Lê as imagens necessarias pelo jogo. """ - p = images_dir + os.path.sep - self.image_player = pygame.image.load( p + "nave.png" ) - self.image_enemy = pygame.image.load( p + "inimigo.png" ) - self.image_fire = pygame.image.load( p + "tiro.png" ) - self.image_enemy_fire = pygame.image.load( p + "tiro_inimigo.png" ) + def load_image( filename ): + img = pygame.image.load( os.path.join( images_dir, filename ) ) + img.set_alpha( None, RLEACCEL ) # disable alpha. + img.convert() + img.set_colorkey( ( 255, 0, 255 ), RLEACCEL ) # magenta + return img + # load_image() + + self.image_player = load_image( "nave.png" ) + self.image_player_status = load_image( "nave_status.png" ) + self.image_enemy = load_image( "inimigo.png" ) + self.image_fire = load_image( "tiro.png" ) + self.image_enemy_fire = load_image( "tiro_inimigo.png" ) # load_images() @@ -711,7 +722,8 @@ pos = [ self.screen_size[ 0 ] / 2, self.screen_size[ 1 ] ] self.player = Player( pos, lives=10, image=self.image_player ) - self.player_life = PlayerLifeStatus( self.player, [ 5, 5 ] ) + self.player_life = PlayerLifeStatus( self.player, [ 5, 5 ], + image=self.image_player_status ) self.player_xp = PlayerXPStatus( self.player, [ self.screen_size[ 0 ] - 100, 5 ], fgcolor="0xff0000" )