<aside> <img src="/icons/info-alternate_green.svg" alt="/icons/info-alternate_green.svg" width="40px" />

Developed a Sokoban game using the Model-View-Controller (MVC) architecture for the Programming Project course, following strict Agile practices and continuous integration with GitLab.

</aside>

This project was developed by a group of four for the Programming Project module in the 3rd year of the BSc in Computer Engineering

Description

The project involved implementing the Sokoban puzzle game using the Model-View-Controller (MVC) pattern, ensuring clear separation of concerns between the game logic (Model), user interface (View), and user interaction control (Controller). The game was designed with a graphical user interface (GUI) built in Java Swing, enabling users to move a character to solve puzzles by pushing crates to specific target locations.

We followed Agile/XP principles, organizing the development process in two sprints. The GitLab repository was used for continuous integration (CI), and all commits were pushed to a remote GitLab server with proper tagging for each sprint. Unit testing was conducted using JUnit 5.6, ensuring the game's functionality was rigorously tested. Additionally, SonarQube was used to analyze code quality, enforcing a strict quality gate for the project, while Maven was utilized as the build automation tool. The entire project was deployed on a production environment within a Virtual Machine, where the game had to run flawlessly.

A detailed logging system was implemented using SLF4J to track user actions and game events, and the project was documented thoroughly with a README file containing all necessary information about file formats, controls, and authorship.


Technologies