domingo, 4 de enero de 2009

Pacman 0.006 Con marcador

código pacman

Añadimos un marcador en nuestro juego en donde se muestre las vidas que les queda a nuestro Pacman y los puntos conseguidos.

Para esto, creamos una clase llamada "Marcador" que también es un sprite. Nuestro marcador es bastante sencillo, empleando la función "sprint.font.render" para crear una imagen con el texto indicado.

class Marcador (pygame.sprite.Sprite):
def __init__(self, pacman):
pygame.sprite.Sprite.__init__(self)
self.pacman = pacman
self.font = pygame.font.SysFont("None", 20)
self.rect = pygame.rect.Rect(0,0,0,0)


def update(self):
self.text = "vidas: %d, puntos: %d" %
(self.pacman.vidas, self.pacman.puntos)

self.image = self.font.render(self.text, 1,(255, 255, 0))
self.rect = self.image.get_rect()

#situamos al marcador en la esquina inferior derecha
self.rect.topleft =
(pygame.display.get_surface().get_width() -
self.rect.width,
pygame.display.get_surface().get_height() -
self.rect.height)

Un detalle, observa que le pasamos al constructor de la clase Marcador,  función "__init__", el sprite Pacman del que vamos a mostrar sus puntos y vidas. Estas dos propiedades se la añadimos a la clase Pacman.

class Pacman ( MiSprite ):
def __init__(self, fichero_imagen, pos_inicial):
MiSprite.__init__(self, fichero_imagen, pos_inicial, [0,0])
self.vidas = 3
self.puntos = 0

Además hacemos que cuando pacman se coma un objeto, se compruebe si este tiene asociado puntos y si es así, se los sumamos a los puntos de pacman

class Pacman ( MiSprite ):
...
def update (self):
...
global sprites
sprites_choque = pygame.sprite.spritecollide(self, sprites, False)
for sprite in sprites_choque:
if sprite != self:
if hasattr ( sprite, "comestible" ):
if sprite.comestible:
if hasattr ( sprite, "puntos" ):
self.puntos += sprite.puntos

sprite.kill() #destruimos el sprite

En la próxima entrega haremos que nuestro fantasma se mueva por toda la pantalla en busca de nuestro pacman.

No hay comentarios: