Este ejemplo a diferencia de los anteriores usa sprites animados, dando la sensación de que el personaje camina; cabe aclarar que es un ejemplo muy sencillo ya que el usuario no interactúa es una simple animación, sin embargo es muy fácil hacer que el personaje se mueva con el teclado si se implementa las instrucciones del teclado del ejemplo anterior.
Se divide en dos archivos: sujetos.py y juego.py
sujetos.py
import pygame
class sujeto(pygame.sprite.Sprite):
"""De esta clase heredan los objetos vivientes"""
def __init__(self, imagenes):
self.imagenes = imagenes
self.frame = 0
self.indicador = 30
self.rect = self.imagenes[self.frame].get_rect()
self.rect.top = 300
self.rect.left = 40
def move(self, vx,vy):
self.rect.move_ip(vx,vy)
def update(self, superficie):
superficie.blit(self.imagenes[self.frame],self.rect)
def nextFrame(self):
self.frame = self.indicador % len(self.imagenes) #controla los indices de las imagenes
self.indicador+=1 #sigue a la imagen siguiente
def setNewSprites(self,imagenes):
self.imagenes = imagenes
class Player(sujeto):
"""Clase del heroe"""
def __init__(self, imagenes):
sujeto.__init__(self,imagenes)
def getLife():
return self.life
juego.py
import pygame
import sujetos
import os
# Constantes
ANCHO = 640
ALTO = 480
# Inicializaciones y variables globales
pygame.init()
screen = pygame.display.set_mode((ANCHO,ALTO))
pygame.display.set_caption("SponjeBob Attack")
reloj = pygame.time.Clock()
# Carga las imagenes
def load_img(nombre, directorio):
ruta = os.path.join(directorio,nombre)
try:
image = pygame.image.load(ruta)
except:
print "Error! no se puede cargar la imagen"
return image.convert_alpha()
imagenesPlayerDer = [load_img("walkr1.png","Res"),load_img("walkr2.png","Res"),
load_img("walkr3.png","Res"),load_img("walkr4.png","Res"),
load_img("walkr5.png","Res"),load_img("walkr6.png","Res"),]
imagenesPlayerIzq = [load_img("walkl1.png","Res"),load_img("walkl2.png","Res"),
load_img("walkl3.png","Res"),load_img("walkl4.png","Res"),
load_img("walkl5.png","Res"),load_img("walkl6.png","Res"),]
imagenFondo = load_img("fondo.png","Res")
# Pinta las imagenes en la pantalla
def paint(player):
screen.blit(imagenFondo,[0,0])
player.update(screen)
pygame.display.update()
player.nextFrame()
def main():
spritesRight = True
player = sujetos.Player(imagenesPlayerDer)
exit = False
vx = 15
while exit != True: # Bucle principal
paint(player)
player.move(vx,0)
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit = True
# control de los limites
if player.rect.left >= ANCHO or player.rect.left <= 0:
vx=-vx
if spritesRight == True: #si mira hacia la derecha
player.setNewSprites(imagenesPlayerIzq)
spritesRight = False
else: #si mira hacia la izquierda
player.setNewSprites(imagenesPlayerDer)
spritesRight = True
reloj.tick(12)
pygame.quit()
# INICIO
if __name__ == '__main__':
main()
Pueden descargar el código completo con las imagenes aquí o aquí. Esos son módulos base para el juego que publicare próximamente, hasta entonces.

y como le hago para hacer lo mismo pero ponerlo de fondo ? es q quiero hacer un "gif(varias de mis imagenes)" de fondo
ResponderEliminar