Repositorio con los ejemplos de PyGame utilizados en la asignatura "Contornos Inmersivos Interactivos y de Entretenimiento" de la Universidade da Coruña.
-
Python 3.8-3.12.12 (actualmente con versiones superiores pygame presenta incompativilidades)
-
pip (gestor de paquetes de Python)
-
(Opcional) uv (gestor de paquetes alternativo más rápido)
El proyecto requiere las siguientes dependencias:
- pygame==2.5.2 (biblioteca para el desarrollo de juegos)
- Crear un entorno virtual:
python -m venv venv- Activar el entorno virtual:
- En Windows:
venv\Scripts\activate- En Linux/Mac:
source venv/bin/activate- Instalar las dependencias:
pip install -r requirements.txt- Instalar uv (si no lo tienes):
pip install uv- Crear y activar el entorno virtual:
uv venv
# En caso de que la version de python usada no este entre 3.8-3.12
uv venv -p 3.11- Activar el entorno virtual:
- En Windows:
.\venv\Scripts\activate- En Linux/Mac:
source venv/bin/activate- Instalar las dependencias:
uv pip install -r requirements.txtEste repositorio contiene ejemplos prácticos de PyGame que se utilizan durante el curso para ilustrar diferentes conceptos de programación de juegos y aplicaciones interactivas.
Una implementación progresiva del clásico juego Pong, que muestra diferentes conceptos de programación de juegos:
1 - solo se crea la pantalla y sale.py: Ejemplo básico de inicialización de PyGame2 - con el bucle infinito.py: Implementación del bucle principal del juego3 - la pelota se mueve (muy rapido).py: Añade movimiento básico a la pelota4 - con reloj.py: Control de FPS y velocidad del juego5 - la pelota rebota en los limites.py: Implementación de colisiones con los bordes6 - con las raquetas.py: Añade las raquetas al juego7 - las raquetas se mueven.py: Control de movimiento de las raquetas8 - teclas pulsadas y sin raton.py: Mejora del control de teclado9 - las raquetas no se salen.py: Límites de movimiento de las raquetas10 - colisiones con las raquetas.py: Sistema de colisiones con las raquetas11 - pausa y reinicio cuando el jugador falla.py: Sistema de pausa y reinicio12 - contando los puntos.py: Sistema de puntuación básico13 - marcadores.py: Visualización de la puntuación14 - mensaje inicial y espera.py: Pantalla de inicio y espera15 - con sonidos.py: Añade efectos de sonido16 - con imagen de fondo.py: Implementación de fondos gráficos17 - orientacion a objetos.py: Refactorización usando programación orientada a objetos18 - con sprites.py: Implementación usando el sistema de sprites de PyGame
Una serie de ejemplos que muestran el uso de sprites y animaciones en PyGame:
1 - toda la imagen como Sprite.py: Ejemplo básico de creación de un sprite2 - sprite animado.py: Implementación de animación básica de sprites3 - sprite se mueve mas despacio.py: Control de velocidad del sprite4 - mirando hacia los dos lados.py: Control de dirección y orientación del sprite5 - con grupos.py: Uso de grupos de sprites para gestión eficiente6 - con postura de estar quieto y movimiento medido.py: Estados y transiciones de animación7 - con saltos.py: Implementación de mecánicas de salto8 - con gestor de recursos.py: Sistema de gestión de recursos para sprites y animaciones
Ejemplos de juegos de plataformas que muestran diferentes aspectos de la programación de juegos:
Un juego de plataformas básico que muestra la implementación de:
- Sistema de física básica (gravedad, saltos)
- Colisiones con plataformas
- Animaciones de personaje
- Gestión de recursos
- Estructura modular del código
Archivos principales:
main.py: Punto de entrada del juegoconfiguracion.py: Configuraciones globalesrecursos.py: Gestión de recursos (imágenes, sonidos)personajes.py: Lógica de los personajesfase.py: Gestión del nivel y plataformas
Versión extendida del juego de plataformas que añade:
- Control de dos jugadores simultáneos
- Interacción entre jugadores
- Sistema de colisiones mejorado
- Gestión de recursos compartidos
Archivos principales:
main.py: Punto de entrada del juegoconfiguracion.py: Configuraciones globalesrecursos.py: Gestión de recursos (imágenes, sonidos)personajes.py: Lógica de los personajesfase.py: Gestión del nivel y plataformas
Versión extendida del juego de plataformas que añade:
- Un controlador de escena basado en colas
- Modularización de la gestión de los eventos y la pantalla
- Un sistema de transición de escenas
- La definición de las escenas
Archivos principales:
main.py: Punto de entrada del juegoconfiguracion.py: Configuraciones globalesrecursos.py: Gestión de recursos (imágenes, sonidos)personajes.py: Lógica de los personajesfase.py: Gestión del nivel y plataformasescena.py: Interface declarativo para cualquier escenadirector.py: Clase que implementa el patrón director
Versión extendida del juego de plataformas que añade:
- Añadir todos los elementos para la creación de GUI
- Patrón Plantilla en los elementos que heredan de ElementoGUI
- Patrón Strategy para cada uno de los elementos la acción a desarrollar
- Patrón Fachada en los menús donde delegan todos los elementosGUI
- Patrón Composite ya que todos los elementosGUI saben el Panel al que pertenecen y quien delega las funciones
Archivos principales:
main.py: Punto de entrada del juegoconfiguracion.py: Configuraciones globalesrecursos.py: Gestión de recursos (imágenes, sonidos)personajes.py: Lógica de los personajesfase.py: Gestión del nivel y plataformasescena.py: Interface declarativo para cualquier escenadirector.py: Implementación del patrón directormenu.py: Todos los elementos relativos a la creación de menús
Versión extendida del juego de plataformas que añade:
- Extender la clase PygAnim para incluir animaciones
- Incluir una serie de animaciones en el menu y en la fase a modo de ejemplo
Archivos principales:
main.py: Punto de entrada del juegoconfiguracion.py: Configuraciones globalesrecursos.py: Gestión de recursos (imágenes, sonidos)personajes.py: Lógica de los personajesfase.py: Gestión del nivel y plataformasescena.py: Interface declarativo para cualquier escenadirector.py: Implementación del patrón directormenu.py: Todos los elementos relativos a la creación de menúsanimacion.py: Contine la clase Animation y las subclases que se definenpyganim: Implementatión del modulo PygAnim para pygame
Versión optimizada del juego de plataformas que añade:
- Uso de
__slots__en las clases depersonajes.pypara optimizar el uso de memoria y mejorar el rendimiento de las instancias de los personajes. - Ejemplo práctico de cómo aplicar esta técnica en un proyecto real de PyGame.
Archivos principales:
main.py: Punto de entrada del juegoconfiguracion.py: Configuraciones globalesrecursos.py: Gestión de recursos (imágenes, sonidos)personajes.py: Lógica de los personajes optimizada con__slots__fase.py: Gestión del nivel y plataformas, una optimización con__slots__escena.py: Interface declarativo para cualquier escenadirector.py: Implementación del patrón directormenu.py: Todos los elementos relativos a la creación de menúsanimacion.py: Contiene la clase Animation y las subclases que se definenpyganim: Implementación del módulo PygAnim para pygame
Una vez configurado el entorno virtual y instaladas las dependencias, puedes ejecutar los ejemplos individuales siguiendo las instrucciones específicas de cada uno.
- Se recomienda mantener el entorno virtual actualizado con las últimas versiones de las dependencias.
- Si encuentras algún problema o tienes sugerencias, no dudes en abrir un issue en el repositorio.
