Repository for the practical work of the Programming Topics course - UNLaM (National University of La Matanza).
Summary •
Features •
Installation •
Known Issues •
Application Structure •
Team Workflow •
Development Team •
Additional Material •
License •
Acknowledgments
This repository contains the practical work for the Programming Topics course at the National University of La Matanza (UNLaM). The practical work involves the development of Conway's Game of Life using the C programming language and the Simple DirectMedia Layer (SDL) library for the graphical interface.
- Architecture planning
- Code conventions and standards
- Code documentation using Doxygen syntax
- Continuous integration with GitHub Actions
- Dynamic memory
- Team Workflow planning (branches, tags, and releases)
-
Clone the repository to your device and install the CodeBlocks IDE with MinGW.
-
Open the files src.cbp (main project) and libs.cbp (library project) with the CodeBlocks application. These files are located within the cloned repository.
-
Select the libs.cbp project (library project) and compile it in Release mode and Debug mode.
-
Select the src.cbp project (main project) and run it in Release mode to enjoy Conway's Game of Life.
Issue | Solution |
---|---|
src.cbp (main project) doesn't compile | Select the libs.cbp project (library project) and compile it in Release mode and Debug mode. Then, select the src.cbp project (main project), right-click on it, choose Build Options , and go to the Linker settings tab. There, add the libs.a files located in the libs/bin/Debug and libs/bin/Release folders. Finally, try compiling the main project again. |
C-Practical-Work-2024/
│
├── .github/
│ ├── statics/
│ │ ├── illustration-01.png
│ │ ├── illustration-02.png
│ │ └── preview.png
│ │
│ ├── translations/
│ │ ├── en/
│ │ │ ├── documentation.md
│ │ │ └── requirements.md
│ │ │
│ │ └── es/
│ │ ├── README.md
│ │ ├── documentation.md
│ │ └── requirements.md
│ │
│ └── workflows/
│ └── format-code.yml
│
├── src/
│ ├── main.c
│ ├── src.cbp
│ │
│ └── statics/
│ └── initial-state.txt
|
├── libs/
│ ├── libs.cbp
│ ├── macros.h
│ ├── main.h
│ ├── utilities.c
│ ├── utilities.h
│ ├── validators.c
│ ├── validators.h
| |
│ └── patterns/
│ ├── constructors.c
│ ├── constructors.h
│ ├── macros.h
│ ├── main.h
│ ├── methods.c
│ ├── methods.h
│ └── structs.h
|
├── .clang-format
├── .gitignore
├── LICENSE
└── README.md
-
.github - Files related to the application's documentation and continuous integration.
- statics - Static files (images, videos, diagrams, etc.).
- translations - Translations of
.md
(Markdown) files. - workflows - GitHub Actions workflows.
-
src - Main project of the application.
-
main.c - Main execution file.
-
src.cbp - Project configuration file.
-
statics - Files (images, videos, diagrams, etc.).
- initial-state.txt - File with the initial state of the application.
-
-
libs - Project containing the libraries necessary for the execution of the main application project.
-
libs.cbp - Project configuration file.
-
macros.h - File with essential project macros.
-
main.h - File indexing all
.h
files of the project. -
utilities.c - File with the implementation of the function prototypes found in
utilities.h
. -
utilities.h - File with common structures and function prototypes.
-
validators.c - File with the implementation of the function prototypes found in
validators.h
. -
validators.h - File with functions prototypes related to validation process.
-
patterns - Functions and structures for create patterns with cells.
- constructors.c - File with the implementation of the function prototypes found in
constructors.h
. - constructors.h - File with structures and function prototypes related to patterns creation.
- macros.h - File with macros.
- main.h - File indexing all
.h
files insidepatterns
folder. - methods.c - File with the implementation of the function prototypes found in
methods.h
. - methods.h - File with function prototypes related to pattern methods.
- structs.h - File with structs.
- constructors.c - File with the implementation of the function prototypes found in
-
-
.clang-format - Configuration file for the
clang-format
code formatting tool. -
.gitignore - Git configuration file to avoid tracking unwanted files.
-
LICENSE - Project license.
-
README.md - Markdown file with the general documentation for the application and repository.
%%{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"
vMAJOR.MINOR.PATCH
: This tag indicates a release of the practical work following Semantic Versioning, and will only be present in theMaster
branch commits.
-
Master
: Branch containing stable versions of the practical work. -
develop
: Branch containing the development versions of the practical work, where team members will introduce new changes (commits).
The other branches are fictional and represent individual contributions from each member to the
develop
branch.
This repository is under the MIT License. For more information about what is permitted with the contents of this repository, visit choosealicense.com.
We would like to thank the teachers from the UNLaM Programming course for their support and guidance.