Skip to content

Latest commit

 

History

History
301 lines (246 loc) · 16.9 KB

File metadata and controls

301 lines (246 loc) · 16.9 KB

Trabajo Práctico de C [2024]

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

Vista previa

(video demostrativo)

Resumen

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.

Características

  • 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)

Instalación

  1. Clona el repositorio en tu dispositivo e instala el IDE CodeBlocks con MinGW.

  2. 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.

  3. Selecciona el proyecto libs.cbp (proyecto con las librerías) y compílalo en modo Release y en modo Debug.

  4. Selecciona el proyecto src.cbp (proyecto principal) y ejecútalo en modo Release para disfrutar del Juego de la Vida de Conway.

Argumentos del programa

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.

Problemas conocidos

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.

Estructura de la aplicación

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 carpeta games.
      • 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 carpeta patterns.
      • 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.
  • 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.

      • SDL2 - Librería SDL2.

      • main.h - Archivo que indexa todos los archivos .h dentro de la carpeta sdl.

      • 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 que permiten interactuar con la librería SDL2.

    • statics - Archivos (imágenes, videos, diagramas, etc.).

  • .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.

Flujo de trabajo del equipo

%%{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"
Loading

Etiquetas

  • 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 rama Master.

Ramas

  • 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.

Equipo de desarrollo

Material adicional

Licencia

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.

Agradecimientos

Agradecemos a los docentes de la UNLaM de la asignatura de Programación por su apoyo y guía.