Configuración del Entorno de Desarrollo
Prerrequisitos
- Python 3.12+ (recomendado)
- Git para control de versiones
- Editor de código (VS Code, PyCharm, etc.)
- Cuenta de Firebase (para funciones en la nube)
Configuración Inicial
git clone <repository-url> cd ClassicGame python -m venv venv # En Windows: venv\Scripts\activate source venv/bin/activate pip install -r requirements.txt
cp .env.example .env # Editar .env con tus credenciales de Firebase
python main.py
Estructura del Proyecto en Profundidad
ClassicGame/ ├── src/ # Código fuente │ ├── game/ # Lógica principal del juego │ │ ├── game_manager.py # Coordinador principal │ │ └── level.py # Definiciones de nivel │ ├── entities/ # Objetos del juego │ │ ├── player.py # Personaje jugador │ │ ├── enemy.py # Enemigos con IA │ │ ├── collectible.py # Objetos coleccionables │ │ └── projectile.py # Objetos lanzables │ ├── managers/ # Gestores de sistemas │ │ ├── entity_manager.py # Ciclo de vida de entidades │ │ ├── collision_manager.py # Física/colisiones │ │ ├── game_state_manager.py # Gestión de estados │ │ ├── tutorial_manager.py # Sistema de tutorial │ │ ├── level_manager.py # Generación de niveles │ │ ├── firebase_manager.py # Integración en la nube │ │ ├── sound_manager.py # Sistema de audio │ │ ├── save_manager.py # Guardados locales │ │ ├── shop_manager.py # Lógica de tienda │ │ └── ui_manager.py # Coordinación de UI │ ├── ai/ # Inteligencia Artificial │ │ └── q_learning.py # Algoritmo Q-Learning │ ├── ui/ # Interfaz de Usuario │ │ └── shop_menu.py # Interfaz de tienda │ └── utils/ # Utilidades │ └── config.py # Configuración del juego ├── assets/ # Assets del juego │ ├── player/ # Sprites del jugador │ ├── enemy/ # Sprites de enemigos │ └── shop/ # Iconos de tienda ├── data/ # Datos persistentes ├── docs/ # Documentación └── tests/ # Pruebas unitarias
Flujo de Trabajo de Desarrollo
Agregando Nuevas Características
git checkout -b feature/nueva-caracteristica
Sigue los Patrones de Arquitectura:
- Usa el patrón manager para nuevos sistemas
- Implementa manejo adecuado de errores
-
Agrega opciones de configuración a
config.py
python -m pytest tests/
Pautas de Estilo de Código
Estilo Python
Sigue PEP 8 con estas especificaciones:
# Nomenclatura de clases: PascalCase class EntityManager: pass # Nomenclatura de funciones/variables: snake_case def update_entities(self): player_position = self.get_player_position() # Constantes: UPPER_CASE MAX_ENEMIES = 10 DEFAULT_SPEED = 5 # Docstrings: Estilo Google def calculate_distance(self, point_a, point_b): """Calcula la distancia euclidiana entre dos puntos. Args: point_a (tuple): Primer punto (x, y) point_b (tuple): Segundo punto (x, y) Returns: float: Distancia entre puntos """
Agregando Nuevas Entidades
Paso 1: Crear Clase de Entidad
# src/entities/nueva_entidad.py import pygame class NuevaEntidad: def __init__(self, x, y, config): self.config = config self.rect = pygame.Rect(x, y, 30, 30) self.velocity_x = 0 self.velocity_y = 0 self.active = True # Cargar sprites self.sprites = self.load_sprites() def load_sprites(self): """Cargar sprites de la entidad""" # Implementación aquí pass def update(self): """Actualizar lógica de la entidad""" # Física, IA, etc. pass def render(self, screen): """Renderizar entidad""" if self.sprites: screen.blit(self.sprites[0], self.rect) else: pygame.draw.rect(screen, (255, 0, 0), self.rect)
Testing
Testing Unitario
# tests/test_nueva_entidad.py import unittest from src.entities.nueva_entidad import NuevaEntidad from src.utils.config import Config class TestNuevaEntidad(unittest.TestCase): def setUp(self): self.config = Config() self.entidad = NuevaEntidad(100, 100, self.config) def test_initialization(self): """Test inicialización de entidad""" self.assertEqual(self.entidad.rect.x, 100) self.assertEqual(self.entidad.rect.y, 100) self.assertTrue(self.entidad.active) def test_update(self): """Test lógica de actualización de entidad""" initial_x = self.entidad.rect.x self.entidad.velocity_x = 5 self.entidad.update() self.assertEqual(self.entidad.rect.x, initial_x + 5) if __name__ == '__main__': unittest.main()
Despliegue
Construir Ejecutable
python build.py
Lista de Verificación de Distribución
- ☐ Todos los assets incluidos
- ☐ Variables de entorno configuradas
- ☐ Dependencias resueltas
- ☐ Testing multiplataforma
- ☐ Validación de rendimiento
- ☐ Verificación de manejo de errores
Pautas de Contribución
Proceso de Pull Request
- Fork el repositorio
- Crear rama de característica
- Implementar cambios con tests
- Actualizar documentación
- Enviar pull request con descripción
Lista de Verificación de Code Review
- ☐ El código sigue las pautas de estilo
- ☐ Los tests pasan
- ☐ Documentación actualizada
- ☐ Sin regresiones de rendimiento
- ☐ Manejo de errores implementado
- ☐ Assets gestionados apropiadamente
Mejores Prácticas
Arquitectura
- Mantener separación clara de responsabilidades
- Usar el patrón manager para nuevos sistemas
- Implementar manejo robusto de errores
- Seguir principios SOLID
Rendimiento
- Perfilar regularmente el código
- Usar cache para assets costosos
- Optimizar bucles críticos
- Monitorear uso de memoria
Mantenibilidad
- Escribir código autodocumentado
- Usar nombres descriptivos
- Mantener funciones pequeñas y enfocadas
- Documentar decisiones arquitectónicas
Conclusión
Esta guía de desarrollo proporciona la base para contribuir y extender Donkey Kong Classic. Siguiendo estos patrones y pautas, puedes mantener la calidad del código y la arquitectura del sistema mientras agregas nuevas características emocionantes.
Recuerda: el objetivo es crear código que sea no solo funcional, sino también mantenible, testeable y extensible para futuros desarrolladores.