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