jueves, 1 de enero de 2009

pacman 0.003 - Controlando nuestro pacman

código pacman

Vamos a modificar nuestro juego Pacman para que el muñequito sea controlado por teclado. Además, para que no huyan los muñecos, limitaremos su movimiento a las dimensiones de la pantalla.

Como iremos introduciendo lógica particular para nuestro pacman, crearemos una clase específica para él. La nueva clase se llama "Pacman" y heredará de la clase "MiSprite". Por lo pronto, lo único que haremos es que en la función "update" trate los eventos de teclado y cambie la dirección del muñequito.

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

def update (self):
global eventos
v = 1 #velocidad a la que se mueve nuestro pacman
for event in eventos:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
self.velocidad[0] = -v
self.velocidad[1] = 0
elif event.key == pygame.K_RIGHT:
self.velocidad[0] = v
self.velocidad[1] = 0
elif event.key == pygame.K_UP:
self.velocidad[1] = -v
self.velocidad[0] = 0
elif event.key == pygame.K_DOWN:
self.velocidad[1] = v
self.velocidad[0] = 0
elif event.key == pygame.K_SPACE:
pass

MiSprite.update(self)
Ya ves, muy sencillo, vemos si se produce un evento de tecla pulsada, comprobamos la tecla y si la tecla es de una de la de movimiento de cursor, cambiamos la dirección de nuestro pacman.

Además, vamos a modificar la función "update" de la clase "MiSprite" para que los muñecos no salgan fuera de nuestra pantalla.

class MiSprite ( pygame.sprite.Sprite ):
....
def update (self):
self.rect.move_ip(self.velocidad[0],self.velocidad[1])

screen = pygame.display.get_surface ()

if self.rect.top < 0:
self.rect.top = 0
self.velocidad[1] = 0
elif self.rect.bottom > screen.get_height():
self.rect.bottom = screen.get_height()
self.velocidad[1] = 0

if self.rect.left < 0:
self.rect.left = 0
self.velocidad[0] = 0
elif self.rect.right > screen.get_width():
self.rect.right = screen.get_width()
self.velocidad[0] = 0
No creo que haga falta comentar el código, es también muy sencillo. Se comprueba si el rectángulo de la imagen desborda algún lado de la pantalla y si es así, la modificamos para que no se salga de la pantalla.

Para la próxima entrega haremos que nuestro pacman pueda comer determinados objetos del juego.

No hay comentarios: