LPOO Project (2020)
For the LPOO course final project you will develop a text-based game in Java, taking into consideration the following points:
- The game should be text-based and use lanterna as its GUI framework.
- You should follow good object oriented design practices.
- The main focus of the project is not its size but good usage of design patterns so that OOP principles, like SOLID, are not violated.
- Together with the project, you will write a report that will contain, among others, information about the usage of design patterns in your project, which code smells are still present at the end, and what refactorings could be used to fix them.
- Your source code and report will be stored at a GitHub repository that will be given to you.
- You should also try to use good git practices (like using feature branches).
- Code should be tested extensively. Having a good design will help with this. Use mocks and stubs if needed.
- Important: Having a good design will help with some requirements changing mid-project. Be prepared for some surprises.
The project should be done in groups of two students. If the number of students in a class is odd, one group will have one or three elements.
Deliverables and Deliveries
You should deliver the following two artifacts (both in your GitHub repository):
- The source code, which should follow good object oriented design practices, with close attention to the SOLID principles and the use of appropriate design patterns, in the root folder of the repository. All functionality should be adequately unit-tested. It should be possible to import the repository directly into IntelliJ and just run it using “gradlew run”. Your final submission must be in the master branch.
- A report written in markdown syntax, following the provided template, in a README.md file on the /docs/ folder. It should describe the features that are implemented, the features that are planned, the design patterns that have been used, the existing code smells and what refactoring techniques could be used to fix them. It should also reflect the quality of the unit tests with screenshots and links to the coverage and mutation testing reports.
- You should also have an extra simplified version of the README.md file in your root folder with a simple description of the game, and some screenshots.
These two artifacts (code and report) should be continuously available in the project’s git repository and will be evaluated in two distinct points in time:
- Intermediate delivery @ 2020-05-03.
- Final delivery:
- Code for Demo @ 2020-05-25 to 2020-05-29 week (ready before your last practical class).
- Final Code & Report @ 2020-05-31.
In both of these deliveries the code and the report should reflect your implementation up to that point in time. The features reported as implemented should be properly tested and bug-free. Existing unit tests should all pass. The use of design patterns should be properly motivated and described using UML.