Estructura Básica Pygame

Para empezar a crear juegos en pygame vamos a crear una estructura básica que nos permita implementar todos los elementos del juego.

Importo algunas librerías e inicio la secuencia de juego

import pygame, sys, random
pygame.init()

Declaro algunas clases de «sprite» (elementos del juego).

class Dedo(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()

A la clase la he llamado dedo, he cargado una imagen PNG por lo que activo el canal alpha y por último lo convierto en un rectángulo que me va a permitir definir colisiones.

2. Creo ventana de juego y le doy un nombre.

#Ventana y título
ventana = pygame.display.set_mode((800,700)) 
pygame.display.set_caption('Cada oveja con su pareja')
clock=pygame.time.Clock()

3. Defino las listas

#------------Listas--------------
fondo =pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/fondoarcade.png").convert()

spriteLista=pygame.sprite.Group() #Nombro una lista de sprite
dedo =Dedo() #Asigno clase a un objeto
spriteLista.add(dedo) #Añado a una lista
pygame.mouse.set_visible(0) #Oculto el puntero

Cargo una imagen que he llamado fondo, defino una lista donde guardaré todos los SPRITE, llamo a la clase dedo y guardo todos los dedos impresos en la lista. Por último oculto el puntero.

4. Inicio el bucle del juego

#/////////////////Bucle del juego/////////////////
gameOver=False
while not gameOver:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameOver=True

5. Lógica del juego

    #------------ LOGICA -------------------
    ratonPos = pygame.mouse.get_pos()
    dedo.rect.x=ratonPos[0]
    dedo.rect.y=ratonPos[1]

Capturo la posición del ratón que guardo en x e y para posicionar el objeto dedo en la posición del puntero del ratón. De esta forma el objeto se convierte en el puntero que tenemos oculto.

6. Fondo del juego

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

Puedo poner un fondo esmeralda (color que debo definir antes): esmeralda=(87,181,190) o puedo cargar una imagen situando en 0,0

7. Dibujo

    #------------ DIBUJO ------------------
    spriteLista.draw(ventana)

Dibujo la lista de objetos donde había guardado las imágenes dedo.

8. Cierro el juego

    pygame.display.flip()
    clock.tick(60)
pygame.quit()

Con el clock defino la velocidad del movimiento.

Resultado: una mano que se desplaza por una imagen.

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.