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 ):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.
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)
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 ):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.
....
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
Para la próxima entrega haremos que nuestro pacman pueda comer determinados objetos del juego.
No hay comentarios:
Publicar un comentario