Este repositorio contiene el código para un video tutorial sobre cómo crear una simulación de caída de arena usando Python y Pygame, ademas de programacion POO.
En este tutorial, crearemos una simulación interactiva de caída de arena desde cero. El tutorial te guiará paso a paso, desde la configuración de la cuadrícula hasta la implementación de diversos comportamientos de partículas, como la caída de arena y rocas inamovibles. A lo largo del camino en el README_dsv.md, aprenderás programación en Python, conceptos básicos de Pygame y técnicas de diseño de simulaciones.
- Física de partículas realista: Las partículas de arena caen de forma natural e interactúan con las rocas para formar patrones realistas.
- Múltiples tipos de partículas: Agrega arena, rocas o borra partículas usando diferentes modos.
- Herramientas interactivas: Usa el mouse y el teclado para agregar, eliminar y modificar partículas de manera dinámica.
- Tamaño de pincel personalizable: Crea patrones más grandes con la herramienta de pincel ajustable.
- Información dinámica del cursor: Un cursor personalizado indica la herramienta y el modo seleccionados.
- Rendimiento optimizado: Las actualizaciones basadas en cuadrículas garantizan una simulación fluida incluso con muchas partículas.
- main.py: El punto de entrada del proyecto. Configura la ventana de Pygame, maneja la entrada del usuario y administra la simulación.
- grid.py: Contiene la clase
Grid
, que administra la cuadrícula de partículas y sus actualizaciones. - particle.py: Define las clases
SandParticle
yRockParticle
, junto con sus comportamientos y propiedades. - simulation.py: Contiene la clase
Simulation
, que integra todos los componentes y maneja las interacciones. - utils.py: Contiene las funciones auxiliares para la simulación.
-
Descargar o Clonar este repositorio:
git clone https://github.com/nvarona/simulador-arena.git cd simulador-arena
-
Asegúrate de tener instalados Python y Pygame. Instala Pygame con pip:
pip install pygame
-
Ejecute el script
main.py
:python main.py
Este proyecto se divide en 10 pasos:
- Instalar Pygame: Configurar el entorno e instalar la biblioteca Pygame.
- Crear la ventana y el bucle de simulación: Configurar la ventana Pygame y definir el bucle de simulación.
- Construir la cuadrícula: Crear una cuadrícula bidimensional para gestionar partículas.
- Agregar partículas de arena: Implementar la clase SandParticle y su representación visual.
- Agregar lógica de simulación: Definir cómo caen las partículas e interactúan con su entorno.
- Optimizar el rendimiento: Refactorizar el bucle de simulación para lograr una mayor eficiencia.
- Agregar controles de teclado: Utilizar teclas para cambiar entre los modos Arena, Roca y Borrador.
- Agregar partículas de roca: Introducir rocas inamovibles que interactúen con la arena.
- Agregar herramienta Borrador: Implementar una herramienta para eliminar partículas de forma dinámica.
- Agregar un indicador de cursor: Muestra un cursor dinámico que representa la herramienta seleccionada.
He creado una primera pantalla de inicio donde podemos modificar algunos de los parametros de la simulación, como tamaño de ventana o tamaño de la celda, asi como el modo en el que comenzaremos la simulación en modo Arena o Roca.
A su vez en la pantalla de visulización de la simulacion tenemos unos controles para interactuar con las configuraciones, ademas de un indicador de cursor/pincel y un indicador de modo en el que estamos para ser más explicito.
- Clic izquierdo/derecho del mouse: Agrega partículas o bórralas según el modo actual. (en función del SO)
- Teclas del teclado:
- A: Cambia al modo Arena.
- R: Cambia al modo Roca.
- B: Cambia al modo Borrador.
- Barra espaciadora: Borra toda la cuadrícula.
- Python 3.x
- Pygame (Se recomienda Community Edition para un mejor rendimiento)