Vamos a programar nuestra primera versión de pacman en Python 2.6 y usando la librería "Pygame". En esta primera versión lo que haremos es mostrar en una pantalla negra las imágenes que se muestran a continuación.
Además, haremos que nuestro pacman y el fantasma se muevan por la pantalla.
Todo el código y las imágenes lo tienes en el siguiente fichero pacman
Todos los objetos que mostremos en pantalla serán "sprites". Un sprite es un objeto que tiene dos propiedades: image y rect. "image" es la imagen a mostrar y "rect" es el rectángulo en donde se muestra la imagen en pantalla.
La función "update" de los sprites es llamada de forma continua a lo largo del juego para poder hacer cualquier cambio. Por ejemplo, en nuestro caso cambiamos la posición del sprite en pantalla empleando la función "move_ip" que desplaza el rectángulo de la imagen según la velocidad indicada en el constructor del sprite.
Por si no conoces Python, la función "__init__" es el constructor de la clase.
import pygameUna vez definida nuestra clase Sprite vamos a inicializar el juego y la pantalla. Creamos una copia de la pantalla como "background" para optimizar el redibujado.
class MiSprite ( pygame.sprite.Sprite ):
def __init__(self, fichero_imagen, pos_inicial, velocidad):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(fichero_imagen).convert()
self.rect = self.image.get_rect()
self.rect.topleft = pos_inicial
self.velocidad = velocidad
def update (self):
self.rect.move_ip ( self.velocidad[0], self.velocidad[1])
pygame.init()A continuación creamos los sprites que se muestran en pantalla. Almacenamos los sprites en una lista de tipo "RenderUpdates" que optimiza el redibujado en pantalla.
window = pygame.display.set_mode([300,400])
pygame.display.set_caption("pacman")
screen = pygame.display.get_surface()
screen.fill ([0,0,0])
background = screen.copy()
sprites = pygame.sprite.RenderUpdates()Por último, ejecutamos un bucle infinito en donde se actualizarán los sprites y se redibujarán en pantalla.
sprite = MiSprite("pacman.gif", [0,0], [1,1])
sprites.add ( sprite )
sprite = MiSprite("fantasma.gif",[100,0], [1, 1])
sprites.add ( sprite )
sprite = MiSprite ("fruta.gif", [0, 100], [0,0])
sprites.add ( sprite )
sprite = MiSprite ("bola.gif", [100, 100], [0,0] )
sprites.add ( sprite )
reloj = pygame.time.Clock()En próximas entradas iremos mejorando nuestro pacman.
while True:
sprites.update ()
sprites.clear (screen, background)
pygame.display.update (sprites.draw (screen))
reloj.tick (60) #tiempo de espera entre frames
1 comentario:
Hola compañero las extensiones de las imagenes del código están mal son .png,
es un exelente código corto y claro.
Un saludo
Publicar un comentario