Repositorio del trabajo práctico para la materia Tópicos de Programación - UNLaM (Universidad Nacional de La Matanza).
Resumen •
Características •
Instalación •
Problemas conocidos •
Estructura de la aplicación •
Flujo de trabajo del equipo •
Equipo de desarrollo •
Material adicional •
Licencia •
Agradecimientos
Este repositorio contiene el trabajo práctico de la materia Tópicos de Programación de la Universidad Nacional de La Matanza (UNLaM). El trabajo práctico consiste en el desarrollo del Juego de la Vida de Conway utilizando el lenguaje de programación C y la librería Simple DirectMedia Layer (SDL) para la interfaz gráfica.
- Confirmaciones siguiendo la guía de los Commits Convencionales
- Control de entradas utilizando validaciones
- Convenciones y estándares de código
- Despliegue de entregables
- Diseño responsivo
- Documentación del código utilizando la sintaxis de Doxygen
- Implementación de argumentos del programa
- Implementación de la libraría Simple DirectMedia Layer (SDL)
- Integración continua con GitHub Actions
- Lectura e interpretación de archivos
- Memoria dinámica
- Planificación de la arquitectura
- Planificación del flujo de trabajo del equipo (ramas, etiquetas y versionado)
-
Clona el repositorio en tu dispositivo e instala el IDE CodeBlocks con MinGW.
-
Abre los archivos src.cbp (proyecto principal) y libs.cbp (proyecto con las librerías) con la aplicación CodeBlocks. Estos archivos se encuentran dentro del repositorio clonado.
-
Selecciona el proyecto libs.cbp (proyecto con las librerías) y compílalo en modo Release y en modo Debug.
-
Selecciona el proyecto src.cbp (proyecto principal) y ejecútalo en modo Release para disfrutar del Juego de la Vida de Conway.
Argumento | Descripción | Valor/es aceptado/s | Valor por defecto | Ejemplo |
---|---|---|---|---|
--dashboard-rows |
Cantidad de filas que tendrá el tablero. | int (0, valor por defecto] |
(<RESOLUCIÓN DEL ALTO DE LA PANTALLA> / 10) * 0.93 |
--dashboard-rows=28 |
--dashboard-cols |
Cantidad de columnas que tendrá el tablero. | int (0, valor por defecto] |
(<RESOLUCIÓN DEL ANCHO DE LA PANTALLA> / 10) * 0.99 |
--dashboard-cols=55 |
--pattern |
Patrón a dibujar en el centro del tablero. | "glider" , "toad" , "press" ó "glider cannon" |
"" |
--pattern="glider cannon" |
--maximum-generation |
Generaciones máximas. | int (un valor menor a 0 se interpreta como generaciones infinitas) |
0 |
--maximum-generation=-1 |
--delay |
Tiempo de espera para generar la siguiente generación. | int [0, 1000] |
0 |
--delay=50 |
--platform |
Plataforma en donde se dibujara el tablero. | "console" ó "sdl" |
"" |
--platform="sdl" |
--initial-state-file |
Ruta a un archivo con el estado inicial del tablero. | Cualquier ruta a un archivo con extensión .txt ó .csv |
"" |
--initial-state-file="./statics/initial-state.csv" |
¿Cómo defino los argumentos del programa? (opcional).
Important
Todos los argumentos (exceptuando --dashboard-rows
, --dashboard-cols
y --initial-state-file
) serán solicitados por consola si no son definidos o acepados. Además, el parámetro --pattern
sera ignorado si se declara un parámetro --initial-state-file
válido.
Warning
El contenido del archivo apuntado por el parámetro --initial-state-file
debe seguir un formato especifico como puede observar en el archivo initial-state.csv.
Problema | Solución |
---|---|
Proyecto src.cbp (proyecto principal) no compila | Selecciona el proyecto libs.cbp (proyecto con las librerías) y compílalo en modo Release y en modo Debug. Luego, selecciona el proyecto src.cbp (proyecto principal), haz clic derecho sobre este, elige la opción Build Options y ve a la pestaña Linker settings . Allí, añade los archivos libs.a que se encuentran dentro de las carpetas libs/bin/Debug y libs/bin/Release . Finalmente vuelve a intentar compilar el proyecto principal. |
C-Practical-Work-2024/
│
├── .github/
│ ├── statics/
│ │ ├── demo.mp4
│ │ ├── illustration-01.png
│ │ ├── illustration-02.png
│ │ └── preview.png
│ │
│ ├── translations/
│ │ ├── en/
│ │ │ ├── documentation.md
│ │ │ └── requirements.md
│ │ │
│ │ └── es/
│ │ ├── README.md
│ │ ├── documentation.md
│ │ └── requirements.md
│ │
│ └── workflows/
│ ├── format-code-on-pr.yml
│ └── format-code.yml
|
├── libs/
│ ├── libs.cbp
│ ├── macros.h
│ ├── main.h
│ ├── utilities.c
│ ├── utilities.h
│ ├── validators.c
│ ├── validators.h
| |
│ ├── game/
| | ├── macros.h
| | ├── main.h
| | ├── methods.c
| | ├── methods.h
| | └── structs.h
| |
│ └── patterns/
│ ├── constructors.c
│ ├── constructors.h
│ ├── macros.h
│ ├── main.h
│ ├── methods.c
│ ├── methods.h
│ └── structs.h
│
├── src/
│ ├── macros.h
│ ├── main.c
│ ├── src.cbp
│ ├── structs.h
│ ├── utilities.c
│ ├── utilities.h
│ ├── validators.c
│ ├── validators.h
│ │
│ ├── sdl/
│ │ ├── main.h
│ │ ├── methods.c
│ │ ├── methods.h
│ │ │
│ │ └── SDL2/
│ │ └── ( ... )
│ │
│ └── statics/
│ └── initial-state.csv
|
├── .clang-format
├── .gitignore
├── LICENSE
└── README.md
-
.github - Archivos relacionados a la documentación de la aplicación y a la integración continua.
- statics - Archivos estáticos (imágenes, videos, diagramas, etc.).
- translations - Traducciones de los archivos con extensión
.md
(Markdown). - workflows - Flujos de trabajo de las GitHub Actions.
-
libs - Proyecto con las librerías necesarias para la ejecución del proyecto principal de aplicación.
-
libs.cbp - Archivo de configuración del proyecto.
-
macros.h - Archivo con las macros esenciales del proyecto.
-
main.h - Archivo que indexa todos los archivos
.h
del proyecto. -
utilities.c - Archivo con el desarrollo de los prototipos de función presentes en
utilities.h
. -
utilities.h - Archivo con los prototipos de función de uso común.
-
validators.c - Archivo con el desarrollo de los prototipos de función presentes en
validators.h
. -
validators.h - Archivo con prototipos de funciones relacionadas con procesos de validación.
-
game - Funciones y estructuras para crear e interactuar con el Juego de la Vida de Conway.
- macros.h - Archivo con macros.
- main.h - Archivo que indexa todos los archivos
.h
dentro de la carpetagames
. - methods.c - Archivo con el desarrollo de los prototipos de función presentes en
methods.h
. - methods.h - Archivo con los prototipos de función relacionados a los métodos del Juego de la Vida de Conway.
- structs.h - Archivo con estructuras.
-
patterns - Funciones y estructuras para crear patrones con células.
- constructors.c - Archivo con el desarrollo de los prototipos de función presentes en
constructors.h
. - constructors.h - Archivo con los prototipos de función relacionados a la creación de patrones.
- macros.h - Archivo con macros.
- main.h - Archivo que indexa todos los archivos
.h
dentro de la carpetapatterns
. - methods.c - Archivo con el desarrollo de los prototipos de función presentes en
methods.h
. - methods.h - Archivo con los prototipos de función relacionados a los métodos de los patrones.
- structs.h - Archivo con estructuras.
- constructors.c - Archivo con el desarrollo de los prototipos de función presentes en
-
-
src - Proyecto principal de la aplicación.
-
macros.h - Archivo con las principales macros del proyecto.
-
main.c - Archivo de ejecución principal.
-
src.cbp - Archivo de configuración del proyecto.
-
structs.h - Archivo con las principales estructuras para configurar el proyecto.
-
utilities.c - Archivo con el desarrollo de los prototipos de función presentes en
utilities.h
. -
utilities.h - Archivo con los prototipos de función para configurar el proyecto.
-
validators.c - Archivo con el desarrollo de los prototipos de función presentes en
utilities.h
. -
validators.h - Archivo con los prototipos de función para validar los argumentos del proyecto.
-
sdl - Funciones para interactuar con la librería SDL2.
-
statics - Archivos (imágenes, videos, diagramas, etc.).
- initial-state.csv - Archivo con el estado inicial de la aplicación.
-
-
.clang-format - Archivo de configuración de la herramienta de formateo de código
clang-format
. -
.gitignore - Archivo de configuración de Git para evitar el rastreo de archivos no deseados.
-
LICENSE - Licencia del proyecto.
-
README.md - Archivo Markdown con la documentación general de la aplicación y del repositorio.
%%{init: { 'logLevel': 'debug', 'theme': 'dark', 'gitGraph': {'showBranches': true, 'showCommitLabel': true, 'mainBranchName': 'Master', 'parallelCommits': true}} }%%
gitGraph:
commit
commit tag: "v0.0.1"
branch develop
branch "Giannotti Tiago"
commit
commit
checkout develop
branch "Hoz Lucas"
commit
commit
checkout develop
branch "Huergo Estefania"
commit
commit
checkout develop
branch "Linares Guido"
commit
commit
checkout develop
branch "Quiroga Ferney"
commit
commit
checkout develop
merge "Hoz Lucas"
merge "Giannotti Tiago"
merge "Huergo Estefania"
merge "Quiroga Ferney"
merge "Linares Guido"
checkout Master
merge develop tag: "v1.0.0"
vMAYOR.MINOR.PATCH
: Esta etiqueta indica la publicación de un Release del trabajo práctico siguiendo el Semantic Versioning, y solo estará presente en las confirmaciones de la ramaMaster
.
-
Master
: Rama que contiene las versiones estables del trabajo práctico. -
develop
: Rama que alberga las versiones en desarrollo del trabajo práctico, donde los miembros del equipo incorporarán nuevos cambios (confirmaciones).
Las demás ramas son ficticias y representan las contribuciones individuales que cada miembro hará sobre la rama
develop
.
Este repositorio está bajo la Licencia MIT. Para más información sobre lo que está permitido hacer con el contenido de este repositorio, visita choosealicense.com.
Agradecemos a los docentes de la UNLaM de la asignatura de Programación por su apoyo y guía.