Margarita Vicarana
Diciembre de 2025
Esta sección aporta algunos ejemplos de demos y pequeños videojuegos escritos con Python y Pygame, presentados por orden de complejidad. Puedes consultarlos en cualquier momento como complemento a la documentación de aprendizaje o, si quieres saber ya cómo funciona Pygame, aquí puedes examinar directamente el código fuente de los programas. Lógicamente, si quieres ejecutar estos programas en tu PC, debes tener instalado Python 3 y Pygame.
Además, hay un apartado final donde se enumeran algunos videojuegos de buena calidad basados en Pygame, así como los sitios web donde pueden encontrarse.
Este programa es una sencilla demo que abre una ventana con el logotipo de Pygame y el texto "¡Hola, mundo!" desplazándose de un lado a otro de la ventana, con música de fondo y emisión de un sonido cuando el texto rebota en un lateral. Se puede desactivar el sonido pulsando la tecla M (y activarlo de nuevo) y se sale pulsando la tecla Esc (o cerrando la ventana haciendo clic en la x de su esquina superior derecha).
Los archivos con el código fuente Python, imágenes y sonidos se pueden descargar con este archivo ZIP.
El archivo con el código fuente se puede ver aquí: hola_mundo.py
Este recurso web del INTEF (Instituto Nacional de Tecnologías Educativas y de Formación del Profesorado) explica paso a paso, mediante cuatro programas sucesivos que van añadiendo elementos, cómo realizar un sencillo y típico videojuego: una pelota rebota en los bordes superior y laterales de la ventana y el usuario debe repelerla con un bate (una pequeña barra) que mueve horizontalmente por la parte inferior de la ventana. El bate se mueve con las teclas de flechas izquierda y derecha, y el programa se termina cerrando la ventana (haciendo clic en la x de la esquina superior derecha).
En este repositorio de GitHub puedes encontrar la misma página web de antes y descargarte todos los archivos de ejemlo, incluidos el archivo Python del programa final (ejercicio4.py) y las imágenes de la pelota y el bate. Para ejecutar el juego en tu PC, descárgate esos tres archivos en un directorio, abre un shell de comandos del sistema (un terminal en Linux o el CMD en Windows), sitúate en el directorio y ejecuta la siguiente orden:
En Linux: python3 ejercicio4.py
En Windows: python ejercicio4.py
Comentarios sobre este programa...
El código fuente del archivo "ejercicio4.py" tiene algunas cosas que se podrían mejorar (el lector puede hacer las modificaciones correspondientes para practicar):
En las líneas 25, 27 y 30 utiliza el método move() de los objetos Rect (baterect y ballrect) para crear un nuevo objeto y asignarlo a las mismas variables. Es mejor usar el método move_ip() (como hace en las líneas 10 y 13), que modifica el propio objeto sin crear y devolver uno nuevo.
En la línea 50 ocurre algo parecido con la llamada al constructor pygame.time.Clock().tick(60). Esto crea un nuevo objeto Clock en cada iteración del bucle while. Lo correcto es crear un único objeto Clock antes del bucle y llamar a su método tick() en cada iteración.
El programa no controla que el bate, manejado por el jugador, alcance los bordes laterales de la ventana y, de hecho, los puede rebasar y desaparecer de la pantalla. Esto se puede impedir fácilmente añadiendo, con un operador and, una condición en los "if keys[...]" de las líneas 24 y 26 que compruebe si los extremos del bate, baterect.left y baterect.right, van a superar el borde izquierdo o derecho de la ventana respectivamente.
Por otro lado, es interesante explicar que el método colliderect(), llamado en la línea 28, comprueba si se produce una colisión entre el rectángulo del bate (baterect) y el rectángulo de la bola (ballrect), es decir, comprueba si ambos rectángulos se superponen en algún punto.
También es interesante fijarse en la línea 30 mencionada antes, donde el método move() recibe como entrada, en vez de los dos valores de desplazamiento en los ejes X e Y, la lista speed con ambos valores. Esto funciona porque este método está preparado para admitir ambas posibilidades, algo que es una práctica común en la definición de funciones en Python. En particular, Pygame tiene muchas funciones y métodos que soportan distintas formas de pasar los parámetros de entrada.
Evasor es un sencillo videojuego donde debemos mover un muñequito para esquivar a unos villanos verdes que van cayendo desde arriba. Tiene música de fondo, sonido de fin de partida (cuando un villano choca con nuestro personaje) y un texto con la puntuación conseguida. El personaje se mueve con las teclas de las cuatro flechas y el juego se termina con la tecla Esc. Si se mantiene pulsada la tecla X, los villanos se mueven más despacio y, si se mantiene pulsada la tecla Z, los villanos invierten su trayectoria (se mueven hacia arriba en vez de hacia abajo).
Este juego está sacado del libro "Inventa tus propios juegos de computadora con Python", escrito por Al Sweigart y traducido por Alfredo Carella, Alejandro Pernin y Francisco Palm. En el capítulo 20 del libro puedes encontrar todos los detalles sobre el juego.
En los siguientes enlaces tienes los archivos originales de Evasor:
Código fuente de Python para ejecutar el juego en una ventana: evasor.py
Código fuente de Python para ejecutar el juego a pantalla completa: evasorPantallaCompleta.py
Archivos de imágenes: jugador.png, villano.png
Archivos de sonido: músicaDeFondo.mid, juegoterminado.wav
Para ejecutar el juego en tu PC, descárgate los archivos anteriores en un mismo directorio, abre un shell de comandos del sistema (un terminal en Linux o el CMD en Windows), sitúate en el directorio de instalación y ejecuta la siguiente orden:
En Linux: python3 evasor.py
En Windows: python evasor.py
Aliens es una demostración del típico videojuego de disparos a naves espaciales que se precipitan pantalla abajo mientras nos bombardean. El jugador mueve horizontalmente, con las teclas de las flechas izquierda y derecha, un vehículo situado en la parte inferior de la pantalla, y dispara a las naves voladoras con la tecla espacio. La tecla F permite alternar entre ventana y pantalla completa.
Aliens es uno de los programas de ejemplo que vienen con Pygame, en el paquete pygame.examples. Es fácil averiguar el directorio de este paquete en nuestro PC ejecutando las siguientes órdenes dentro del intérprete de Python:
import pygame.examples
print(pygame.examples.__file__)
El código fuente de Aliens está en el archivo aliens.py, ubicado dentro del directorio anterior. Se trata de una demostración de uso de Pygame con procesamiento de eventos, control de framerate, imágenes, transparencias, sprites, operación de blitting optimizada (con rectángulos sucios), fuentes de texto, efectos sonoros, música, etc.
El programa se puede ejecutar desde la línea de comandos (un terminal en Linux o el CMD en Windows) escribiendo esta orden:
En Linux: python3 -m pygame.examples.aliens
En Windows: python -m pygame.examples.aliens
El sitio web ProgramArcadeGames.com está dedicado a la enseñanza de la programación de juegos Arcade con Python y Pygame. Ha sido escrito por Paul Vincent Craven, el autor de la biblioteca Arcade para Python, y está disponible en varios idiomas, entre ellos el español (traducción de Antonio Rodríguez Verdugo).
Tiene muchos ejemplos de programas con su código fuente, entre los cuales destaca un juego de plataformas con sprites, que se puede descargar mediante un archivo ZIP.
Hay pocos videojuegos comerciales desarrollados con Python y Pygame, aunque algunos son realmente buenos. Por ejemplo, el autor DaFluffyPotato tiene algunos juegos en la tienda digital de Steam, como Drawn Down Abyss y Super Potato Bruh, bastante baratos para la calidad que alcanzan.
Para encontrar videojuegos libres y gratuitos escritos en Python y Pygame, puedes buscar en varios sitios, aunque hay que investigar un poco para seleccionar los de buena calidad:
PyWeek: es una competición para juegos desarrollados en Python, con un evento bianual donde los participantes deben crear un videojuego desde cero en una semana. Todos sus juegos están bajo una licencia open source o son de dominio público.
GitHub: es la plataforma colaborativa de alojamiento de código más famosa del mundo, adquirida por Microsoft en el año 2018. Como es lógico, ahí están algunos de los mejores proyectos de dominio público de juegos en Python, entre los que podemos citar:
Tuxemon: RPG de lucha con monstruos estilo Pokemon.
SolarWolf: arcade de acción, basado en el SolarFox de Atari 2600.
Super Mario Bros Level 1: un clon del World 1-1 de Super Mario Bros.
FlapPyBird: es un clon del famoso juego de móviles Flappy Bird.
Itch.io: plataforma de distribución digital orientada a la publicación de videojuegos independientes. Tiene dos secciones para juegos hechos con Pygame: Top Games made with pygame y Top Games tagged pygame.
Sitio oficial de Pygame: se pueden encontrar muchos videojuegos en su sección de proyectos.
Pygame Community Edition: es una versión comunitaria de Pygame compatible con el proyecto oficial, pero más activa y actualizada. Su biblioteca pygame-ce se puede instalar con la utilidad pip de Python. En su web mencionan muchos videojuegos hechos en Python, pero no necesariamente open source.
PyPI: repositorio oficial de paquetes externos de Python (software de terceros desarrollado por la comunidad), donde se pueden encontrar algunos videojuegos. Su herramienta de búsqueda permite introducir términos para buscar de forma genérica (por ejemplo, "videojuegos" o "games"), pero además tiene una estructura de clasificadores jerarquizados para seleccionar determinados criterios de búsqueda (por ejemplo, "Topic :: Games/Entertainment").