Fondo en Pygame

En nuestros juegos podemos añadir dos tipos de fondo: color o imagen. Veamos como:

Primero, importamos las librerías y asignamos valores iniciales a las variables que utilizaremos.

import pygame
pygame.init()

class Girl(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/girl.png").convert_alpha()
        self.rect=self.image.get_rect() 
        
ancho=800
alto=700
width=5
height=5
black=(0,0,0)
red=(255,0,0)
white=(255,255,255)
esmeralda=(87,181,190)
x=50
y=490
vel=0
salto=10
isJump=False

A continuación damos forma a la ventana

#Ventana y título
ventana = pygame.display.set_mode((ancho,alto)) 
pygame.display.set_caption('Saltando con imagen')

clock=pygame.time.Clock()

Cargamos una imagen para el fondo y guardamos cada impresión de la clase «girl» en una lista.

#------------Listas--------------
fondo =pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/fondonubes.png").convert_alpha()
girl =Girl() 
girlLista=pygame.sprite.Group() 

girlLista.add(girl) 

Abrimos el bucle y configuramos los eventos del teclado.

#/////////////////Bucle del juego/////////////////
gameOver=False
while not gameOver:
    for event in pygame.event.get():
    
    #----------- pulsar teclas y soltar tecla       

        if event.type == pygame.KEYDOWN: #Si pulso teclado añado velocidad
            if event.key == pygame.K_LEFT:
                vel=-3
            if event.key == pygame.K_RIGHT:
                vel=3
            #Si no está en salto /////////////////
            if event.key==pygame.K_SPACE:
                isJump=True
                
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT:
                vel=0
            if event.key == pygame.K_RIGHT:
                vel=0
        
        if event.type == pygame.QUIT:
            gameOver=True

Cada vez que pulsamos las teclas damos un nuevo valor a la coordenada X que sitúa el objeto. Si la variable isJump es TRUE cambiamos la coordenada Y. Esto pasa cuando pulsamos SPACE. Modificadas las coordenadas, llamamos a la clase con los nuevos valores.

    #------------ LOGICA -------------------
    x += vel 
    
    if isJump:
        if salto>=-10:
            y-=(salto*abs(salto))*0.5
            salto-=1
        else:
            salto=10
            isJump=False

    girl.rect.x=x
    girl.rect.y=y

Podemos utilizar dos tipos de fondo: color o imagen.

#-------------FONDO---------------------
#ventana.fill(esmeralda)
ventana.blit(fondo, [0,0])

Para que nuestro personaje salga delante del fondo debemos dibujarlo a continuación.

    #------------ DIBUJO ------------------
    pygame.draw.rect(ventana,red,(x,y,5,5))
    ventana.blit(girl.image, [x,y])
    girlLista.draw(ventana)
       
    pygame.display.flip()
    clock.tick(60)
pygame.quit()

Este vídeo muestra como hacerlo…

Juande Marín

Profesor de Marketing digital, divulgador de inteligencia artificial y neuroeducación. Especializado en posicionamiento en buscadores y diseño web. Autor de varios libros relacionados con el comercio electrónico y el marketing digital (McGraw Hill, Paraninfo,…) Juande2marin

Material didáctico

Descubre un material moderno y adaptado a ciclos formativos.