jueves, 3 de mayo de 2012

Poniendo un fondo a la pantalla - Pygame

Continuando con mi anterior post, hoy les voy a mostrar como colocarle un fondo a la pantalla.

Para cargar un archivo de imagen, definiremos una funcion que nos facilite el trabajo

def cargar_imagen(nombre,trasnparent=False):
     try: imagen = pygame.image.load(nombre)
     except pygame.error, message:
          raise SystemExit, message
     imagen = imagen.convert()
     if transparent:
          color = imagen.get_at((0,0))
          imagen.set_colorkey(color, RLEACCEL)
     return imagen

Ahora lo explicare línea por línea:

La línea 1 define la función, recibe dos parámetros el nombre/ruta del archivo y la segunda si tiene parte transparente (por defecto definida como falso).

La línea 2 asigna a la variable imagen la imagen a través de la función de Pygame pygame.image.load() si se puede sino, en la líneas 3 y 4 manejan el error y salen del programa.

La línea 5 convierte la imagen al tipo interno de Pygame que hace que sea mucho más eficiente.

Las línea 6 es un condicional que controla si el parámetro transparent es verdadero y en caso afirmativo ejecuta las líneas 7 y 8, la primera obtiene el color del pixel (0, 0) de la imagen (esquina superior izquierda) y la la línea 8 lo define como color transparente de la imagen. Es decir que si quieres una imagen con transparencia, el color que actúa como transparente se toma del pixel superior izquierdo, así que asegúrate que este color no está en la imagen.

Por último la línea 9 retorna la imagen después de todo el proceso.

El programa nos quedaría asi:

#importamos librerias
import pygame
from pygame.locals import *

#iniciamos pygame
pygame.init()

#definimos constantes
pantalla = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Titulo de ventana')

reloj = pygame.time.Clock()

#definimos funciones
def cargar_imagen(nombre,transparente=False):
     try: imagen = pygame.image.load(nombre)

     except pygame.error, message:
          raise SystemExit, message
     imagen = imagen.convert()
     if transparente:
          color = imagen.get_at((0,0))
          imagen.set_colorkey(color, RLEACCEL)
     return imagen

#Aqui es donde colocamos el fondo a la pantalla
fondo = cargar_imagen('datos/fondo.jpg')
pantalla.blit(fondo, (0, 0)) #es para esto que nos sirvio poner en una 
                             #variable los datos de la pantalla
pygame.display.flip()

#Bucle principal del juego
while 1:
 for event in pygame.event.get():
  if event.type == QUIT:
   pygame.quit()
   sys.exit()
  elif event.type == KEYDOWN:
   if event.type == K_ESCAPE:
    pygame.quit()
    sys.exit()

 pygame.display.update()
 reloj.tick(60)

Y aqui tenemos ya nuestro programa con un fondo, ustedes pueden poner el que guste, yo use éste.
La imagen tienen que ponerla en una carpeta llamada datos, en la carpeta donde tienen guardado el programa para que éste codigo les funcione, osino tienen que quitar 'datos/fondo.jgp' y dejar solo 'fondo.jpg' para que no tengan que crear esa carpeta.

Pregunten cualquier duda que tengan ^_^

No hay comentarios:

Publicar un comentario