OpenWebinars

Lenguajes de Programación

Cómo hacer un juego con PYGAME en 10 minutos

Aprende como desarrollar juegos de forma sencilla utilizando Python 3, gracias a la librería Pygame.

José Domingo Muñoz

José Domingo Muñoz

Experto en desarrollo

Lectura 2 minutos

Publicado el 4 de febrero de 2019

Compartir

    Tabla de contenidos

Preparación del entorno

La librería Pygame de Python nos permite desarrollar, de una manera muy sencilla, juegos bastante atractivos.

Para realizar el ejemplo hemos instalado la librería Pygame en un entorno virtual, proceso que hemos visto en un video previo sobre cómo trabajar con entornos virtuales.

El siguiente paso será activar ese entorno virtual, lo que haremos de la siguiente forma:

	source ~pygame_env/bin/activate

Una vez activado nuestro entorno virtual, podemos comprobar que tenemos la librería Pygame instalada:

	pip list

Vemos que está instalada en su versión más reciente, que es la 1.9.4.

Conviértete en un Backend Developer
Domina los lenguajes de programación más demandados. Accede a cursos, talleres y laboratorios para crear proyectos con Java, Python, PHP, Microsoft .NET y más
Comenzar gratis ahora

Primera práctica de desarrollo con Pygame

Vamos a desarrollar un juego de forma práctica, el cual desarrollaremos en tres fases, para que podáis ver lo sencillo que resulta añadir nuevas funcionalidades a nuestros juegos con Pygame.

El primer programa que vamos a utilizar es el siguiente:

	import sys, pygame
	# Inicializamos pygame
	pygame.init()
	# Muestro una ventana de 800x600
	size = 800, 600
	screen = pygame.display.set_mode(size)
	# Cambio el título de la ventana
	Pygame.display.set_caption(“Juego BALL”)
	# Comenzamos el bucle del juego
	run=True
	while run:
		# Capturamos los eventos que se han producido
		for event in pygame.event.get():
			# Si el evento es salir de la ventana, terminamos
			if event.type == pygame.QUIT: run = False
	# Salgo de pygame
	pygame.quit()

Este programa consta de varios pasos:

  • Importamos la librería
  • Inicializamos el motor del juego
  • Creamos una ventana de 800x600
  • Colocamos la etiqueta “Juego BALL” a la ventana
  • Capturamos los eventos

Todos los juegos tienen normalmente la misma estructura, es decir, un juego es un bucle infinito dónde se van obteniendo los eventos, que pueden ser las pulsaciones de teclas o las pulsaciones y movimientos del ratón, y según el evento que se vaya produciendo se va a provocar una operación u otra.

En esta primera versión del juego el único evento que vamos a recoger es el evento QUIT, que es el evento que se produce cuando le damos al botón cerrar de la ventana. En ese caso terminaría el bucle y terminaría el programa.

Ejecutamos el programa para comprobar cómo funciona la primera versión de nuestro juego, y vemos que aparece una ventana de 800x600 únicamente, y que si pulsamos el botón de cerrar la ventana termina la ejecución del mismo.

Tanto Pygame como Python son lenguajes multiplataforma, por lo tanto el mismo programa ejecutado en Windows funcionaría sin ningún problema.

Segunda práctica de desarrollo con Pygame

Vamos ahora con la segunda versión de nuestro juego, en la que vamos a incluir un poco más de funcionalidad.

Esta segunda versión es la siguiente:

	import sys, pygame
	# Inicializamos pygame
	pygame.init()
	# Muestro una ventana de 800x600
	size = 800, 600
	screen = pygame.display.set_mode(size)
	# Cambio el título de la ventana
	Pygame.display.set_caption(“Juego BALL”)
	# Inicializamos variables
	width, height = 800, 600
	speed = [1, 1]
	white = 255, 255, 255
	# Crea un objeto imagen y obtengo su rectángulo
	ball = pygame.image.load(“ball.png”)
	ballrect = ball.get_rect()
	# Comenzamos el bucle del juego
	run=True
	while run:
		# Espero un tiempo (milisegundos) para que la pelota no vaya muy rápida
		pygame.time.delay(2)
		# Capturamos los eventos que se han producido
		for event in pygame.event.get():
			#Si el evento es salir de la ventana, terminamos
			if event.type == pygame.QUIT: run = False
		# Muevo la pelota
		ballrect = ballrect.move(speed)
		if ballrect.left < 0 or ballrect.right > width:
			speed[1] = -speed[1]
		#Pinto el fondo de blanco, dibujo la pelota y actualizo la pantalla
		screen.fill(white)
		screen.blit(ball, ballrect)
		pygame.display.flip()
	# Salgo de pygame
	pygame.quit()

Este segundo programa tiene los siguientes añadidos:

  • Después de crear la ventana inicializamos una serie de variables, anchura, altura y velocidad. Velocidad es una lista, porque es el número de coordenadas X e Y que se va a mover nuestro objeto.
  • Definimos un color
  • Creamos un objeto “ball” a partir de una imagen que tenemos de una pelota
  • Vamos a obtener el rectángulo de la imagen, que nos va a servir para mover la imagen o para ver si la imagen colisiona con algún elemento de la ventana
  • Dentro del bucle hemos añadido un delay y así esperar 2 milisegundos, para que la velocidad con la que se va a mover la pelota no sea muy rápida
  • Capturamos los eventos, como en la versión anterior, pero en esta ocasión vamos a mover la bola a la velocidad que hemos indicado
  • Además vamos a comprobar si la pelota, el rectángulo, toca uno de los laterales de la ventana, entonces cambiamos la dirección de movimiento de la coordenada X o la dirección de movimiento de la coordenada Y.
  • Por último actualizamos la ventana, para que se vea cómo la pelota se mueve alrededor de la ventana.

Ejecutamos el programa y podemos ver cómo tenemos una pelota que está rebotando en la ventana. Si cambiamos el valor del delay a 1 vemos que la pelota se mueve más rápidamente.

Con un programa muy pequeño hemos obtenido una mayor funcionalidad en nuestro juego.

Tercera práctica de desarrollo con Pygame

Por último vamos a ver una tercera versión, dónde tendremos nuestra bola y además tendremos un bate, un dibujo que vamos a poder moverlo para que rebote la pelota.

El programa quedaría de esta forma:

	import sys, pygame
	# Inicializamos pygame
	pygame.init()
	# Muestro una ventana de 800x600
	size = 800, 600
	screen = pygame.display.set_mode(size)
	# Cambio el título de la ventana
	Pygame.display.set_caption(“Juego BALL”)
	# Inicializamos variables
	width, height = 800, 600
	speed = [1, 1]
	white = 255, 255, 255
	# Crea un objeto imagen pelota y obtengo su rectángulo
	ball = pygame.image.load(“ball.png”)
	ballrect = ball.get_rect()
	# Crea un objeto imagen bate y obtengo su rectángulo
	bate = pygame.image.load(“bate.png”)
	baterect = bate.get_rect()
	# Pongo el bate en el centro de la pantalla
	baterect.move_ip(400, 260)
	# Comenzamos el bucle del juego
	run=True
	while run:
		# Espero un tiempo (milisegundos) para que la pelota no vaya muy rápida
		pygame.time.delay(0)
		# Capturamos los eventos que se han producido
		for event in pygame.event.get():
			#Si el evento es salir de la ventana, terminamos
			if event.type == pygame.QUIT: run = False
		# Compruebo si se ha pulsado alguna tecla
		keys = pygame.key.get_pressed()
		if keys[pygame.K_UP]:
			baterect=baterect.move(0, -1)
		if keys[pygame.K_DOWN]:
			baterect=baterect.move(0, 1)
		# Compruebo si hay colisión
		If baterect.colliderect(ballrect):
			speed[0] = - speed[0]
		# Muevo la pelota
		ballrect = ballrect.move(speed)
		if ballrect.left < 0 or ballrect.right > width:
			speed[1] = -speed[1]
		#Pinto el fondo de blanco, dibujo la pelota y actualizo la pantalla
		screen.fill(white)
		screen.blit(ball, ballrect)
		pygame.display.flip()
	# Salgo de pygame
	pygame.quit()

En esta tercera versión añadimos lo siguiente:

  • Creamos el bate desde una imagen
  • Capturamos las pulsaciones de las teclas, en este caso, las pulsaciones de la tecla arriba o la tecla abajo, y eso nos va a permitir mover el bate hacia arriba o hacia abajo.
  • Comprobamos si el bate colisiona con la pelota, y lo hace, cambiamos el eje X de la pelota para que rebote.

Ejecutamos el programa y vemos que podemos mover el bate con las teclas de arriba y abajo, y si tocamos la pelota con el bate va a rebotar.

Mejora las habilidades de tus desarrolladores
Acelera la formación tecnológica de tus equipos con OpenWebinars. Desarrolla tu estrategia de atracción, fidelización y crecimiento de tus profesionales con el menor esfuerzo.
Solicitar más información

Resumen y consejos finales

De una manera muy sencilla, con un programa muy pequeño, obtenemos un resultado muy rápido a la hora de realizar los juegos.

Os invitamos a entrar en la página de Pygame, dónde podéis encontrar documentación, tutoriales y ejemplos de juegos que han hecho otros usuarios, además de tener su código para estudiarlo.

Si quieres aprender en profundidad Python, puedes hacer el curso de Python 3 desde cero de nuestro profesor José Domingo Muñoz en el que aprenderás los fundamentos del lenguaje de programación Python 3 desde cero, pensado para no programadores que se quieran iniciar en este mundo.

Compartir este post

También te puede interesar

Cómo hacer debug con Python
Blog

Cómo hacer debug con Python

Te mostramos cómo depurar un programa en Python 3 utilizando el editor Visual Studio Code.

José Domingo Muñoz
Python para Sysadmin
Blog

Python para Sysadmin

Te contamos los motivos por los que Python 3 es un lenguaje de programación muy interesante para los administradores de sistemas.

José Domingo Muñoz
Icono de la tecnología
Curso

Python 3 desde cero

Intermedio
6 h. y 8 min.

Descubre el fascinante mundo del lenguaje de programación que funciona como una auténtica navaja suiza cuando se trata...

José Domingo Muñoz
4.5