Motivation
The goal of today's exercise is to submit the completed tasks 1, 2, 3, and 4. You will briefly present your solution to the instructor during the 6th exercise.
Objectives
- Finalization of the source code from the completed tasks.
- Preparation of a short video documenting the functionality of the game.
- Finalization of the game design and bonus functionality.
- Submission of the assignment to the GitLab system.
Instructions
- Submit the tasks through the Git version control system on the department's GitLab server.
- The deadline for submission is by the time of your exercise in the 6th week.
The following points will be evaluated as part of the assignment:
- The game is fully functional, follows the rules, and can be controlled through a console interface (max 4 points).
- The service components are functional and integrated into the game, and the player can use them during the game (max 2 points).
- Code quality (max 3 points), especially:
- division of classes into packages, naming of variables, classes, and methods,
- code formatting,
- splitting code into methods, method length,
- code readability, avoiding spaghetti code,
- separation of concerns in the code, e.g. separating the core and logic from the user interface, structuring functionality into methods,
- etc.
- JUnit tests for the created service components and the game core (max 1 point).
- Bonus: design of the game architecture and logic (max 2 bonus points) and extra functionality beyond the assignment (graded depending on implementation quality).
Instructions
Step 1: Game source code
Task 1.1
Submit the completed exercise tasks through the Git version control system on the school GitLab server https://git.kpi.fei.tuke.sk.
If your project uses any additional resources, such as files defining the layout of the game field, make sure to upload those to the repository as well.
Warning
Use the .gitignore file to define directories and files that should not be uploaded to the repository (for example: build, out, target, .idea, ...).
Step 2: Short video from gameplay
Task 2.1
Create a short video (max. 3 minutes) demonstrating the game and its functionality. In the video, show the game field output, control in the console interface, player moves, successful and unsuccessful completion of the game (win, loss, or game exit), valid and invalid user input, service components integrated into the game, and successful execution and verification of JUnit tests.
Also show any features you created beyond the required tasks ;)
You can use any screen recording and video editing tool to create the video. Upload the video to the web using a service such as YouTube, Dropbox, OneDrive, and include the video link in the README.md file in the root directory of your project (please do not upload the video to the repository).
Comment
When uploading the video, check its visibility settings so that your instructors can play it.
Step 3: Bonus - Game design and additional functionality
Task 3.1
Finalize the game architecture and logic design you created in task 1, and the bonus functionality of the game, and upload them to the GitLab repository.
Place diagrams exported to .png or .pdf, and any other materials created during the design phase, into a separate directory outside the source code (create a new directory alongside src, for example design).
Make sure that the diagrams and all texts are clearly readable. Pay attention to neat formatting. Images of the diagrams may also be photographed or scanned if the design was created on paper, but of course the resulting drawings should still be neat.
Warning
Since the architecture design is created before implementation, it does not make sense in the context of submission to generate diagrams later from the already created source code. Such diagrams are only documentation of the source code and do not reflect the analysis process that task 1 was meant to cover.
Additional bonus points can be obtained for example for:
- implementation using design patterns,
- adapting the console interface with the user in mind (a more sophisticated game field output and controls, output coloring, in-game menu, help with controls and game rules, etc.),
- different game modes, levels with varying difficulty,
- random generation of the game field, if it is not required by the nature of the game,
- unit (JUnit) tests verifying game functionality (excluding service components score, comment, and rating),
- additional services, e.g. record & replay,
- other enhancements in the game, according to your own creativity.
Step 4: Completion of the assignment
Task 4.1
Finalize and check your project on the department's GitLab server.
By the time of your exercise in the 6th week, you may update your project repeatedly.
The project should contain:
- the source code of your game and services,
- the source code of the JUnit tests,
- a
README.mdfile containing a link to the short gameplay video, - an optional design directory.