Skip to content

Practical work repository for the Programming Topics subject (C language) at the National University of La Matanza (@unlam).

License

Notifications You must be signed in to change notification settings

hozlucas28/C-Practical-Work-2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C Practical Work [2024]

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

Preview

(demonstration video)

Summary

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.

Features

Installation

  1. Clone the repository to your device and install the CodeBlocks IDE with MinGW.

  2. Open the files src.cbp (main project) and libs.cbp (library project) with the CodeBlocks application. These files are located within the cloned repository.

  3. Select the libs.cbp project (library project) and compile it in Release mode and Debug mode.

  4. Select the src.cbp project (main project) and run it in Release mode to enjoy Conway's Game of Life.

Known Issues

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.

Application Structure

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
|   |
│   └── cells/
│       ├── constructors.c
│       ├── constructors.h
│       ├── methods.c
│       └── methods.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.).

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

    • cells - Functions and structures for cell entities.

      • constructors.c - File with the implementation of the function prototypes found in constructors.h.
      • constructors.h - File with structures and function prototypes related to cell creation.
      • methods.c - File with the implementation of the function prototypes found in methods.h.
      • methods.h - File with function prototypes related to cell methods.
  • .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.

Team Workflow

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

Tags

  • vMAJOR.MINOR.PATCH: This tag indicates a release of the practical work following Semantic Versioning, and will only be present in the Master branch commits.

Branches

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

Development Team

Additional Material

License

This repository is under the MIT License. For more information about what is permitted with the contents of this repository, visit choosealicense.com.

Acknowledgments

We would like to thank the teachers from the UNLaM Programming course for their support and guidance.